2013-03-08 14 views
0

У меня есть класс, называемый x, который является списком массивов и нуждается в сортировке в порядке уменьшения по значению. Мои class-sort custom Array List

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  

Я новичок в java :(

+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);, чтобы объявить об этом. вы не можете использовать переменную до тех пор, пока она не будет объявлена ​​