2013-03-08 4 views
0

나는 배열 목록 인 x라는 클래스를 가지고 있으며 값에 따라 감소 순서로 정렬되어야합니다. 내 클래스 -정렬 사용자 정의 배열 목록

public static class x 
{ 
    public int id; 
    public double value; 
    public x(int _id, double _value) 
    { 
     id = _id; 
     value = _value; 
     //System.out.println(Integer.toString(id)); 
    } 

    public Integer getID(){ 
     return id; 
    } 
    public double getValue(){ 
     return value; 
    } 


    //Sorting 
    public static Comparator<x> getComparator(SortParameter... sortParameters) { 
     return new xComparator(sortParameters); 
    } 

    public enum SortParameter { 
     VAL_DESCENDING 
    } 

    private static class xComparator implements Comparator<x> { 
     private SortParameter[] parameters; 

     private xComparator(SortParameter[] parameters) { 
      this.parameters = parameters; 
     } 

     public int compare(x o1, x o2) { 
      int comparison; 
      for (SortParameter parameter : parameters) { 
       switch (parameter) { 
        case VAL_DESCENDING: 
         comparison = o2.id - o1.id; 
         if (comparison != 0) return comparison; 
         break; 

       } 
      } 
      return 0; 
     } 
    } 

} 

내가 좋아하는 그 전화 :

을 :
cp = x.getComparator(x.SortParameter.VAL_DESCENDING); 
    Collections.sort(attr1, cp); 

attr1

그냥 내가 오류를 얻고있다 this

을 다음 오전 참조 내 배열 목록

입니다

cannot find symbol : variable cp  

나는 자바의 초보자입니다 : (

+4

어디서나 'cp'를 선언하지 않았다. –

+0

@cloudYturtle : cp 변수를 선언 한 위치를 표시합니다. – ankurtr

+2

'비교 자 cp = x.getComparator (x.SortParameter.VAL_DESCENDING); Collections.sort (attr1, cp); ' – Zac

답변

0

Comparator<x> cp = x.getComparator(x.SortParameter.VAL_DESCENDING);을 사용해보십시오. 변수가 선언 될 때까지는 변수를 사용할 수 없다.