2014-02-20 2 views
0

У меня есть Список приложений, в которых каждая сущность представляет пользовательский объект.Сортировка списка пользовательского объекта w.r.t. член данных

List<String> Applications = new ArrayList<String>(); 

У меня есть класс приложений, как это:

public Class Application 
{ 
    private String ApplicationName; 
    private int Priority 
} 

Мне нужно сортировать приложения w.r.t. Приоритет. Обратите внимание: приоритет может содержать только три значения, т. Е. 1, 2 и 3 для высоких, средних и низких соответственно.

Я реализовал Comparator для сортировки списка, как это:

Collections.sort(this.Applications, new Comparator<Application>() 
{ 
    @Override 
    public int compare(Application App1, Application App2) 
    { 
     return App1.Priority.compareTo(App2.Priority); 
    } 
}); 

Но компилятор дает мне эту ошибку:

Cannot invoke compareTo(int) on the primitive type int 
+0

Основная проблема заключается в том, что 'int' примитивный тип, а не класс, а есть ** НЕТ ** методы для вызова из примитивного типа. [Ответ Луисвассермана] (http://stackoverflow.com/a/21915358/1065197) объясняет, как это решить. –

+1

В качестве примечания, соглашение Java состоит в том, что имена переменных и методов должны начинаться с строчной буквы: 'app1.priority'. Следуя этому соглашению, ваш код будет намного легче понять другим. – chrylis

ответ

4

Если вы используете Java 7, а затем заменить

return IA1.Priority.compareTo(IA2.Priority); 

с

return Integer.compare(IA1.Priority, IA2.Priority); 

... В противном случае, вам придется заменить его

if (IA1.Priority < IA2.Priority) { 
    return -1; 
} else if (IA1.Priority == IA2.Priority) { 
    return 0; 
} else { 
    return 1; 
} 
+0

или просто '' 'return IA2.Priority - IA1.Priority;' '' – NeplatnyUdaj

+1

@NeplatnyUdaj, который может вызвать переполнение. –

+0

luiggi-mendoza: Правильно, но я думаю, что приоритет приложения не будет очень большим и отрицательным числом. Я согласен, что это не очень хороший совет :) – NeplatnyUdaj

Смежные вопросы