Коллекции. Сортировка в java для любого класса - PullRequest
2 голосов
/ 26 июля 2011

проблема Java-класса

В C ++, если мы добавляем некоторые объекты класса в вектор, мы можем отсортировать список, указав некоторые функции, такие как operator <() или operator == () или operator! =. </p>

Что нам нужно сделать в java, чтобы Collections.sort работал в соответствии с нашими пожеланиями

Ответы [ 5 ]

8 голосов
/ 26 июля 2011

Вы реализуете Comparable<T>.

Из документов на Collections.sort:

Сортирует указанный список в порядке возрастания в соответствии с естественным порядком его элементов. Все элементы в списке должны реализовывать интерфейс Comparable. Кроме того, все элементы в списке должны быть взаимно сопоставимы (то есть e1.compareTo (e2) не должно вызывать исключение ClassCastException для любых элементов e1 и e2 в списке).

В качестве альтернативы, если вы не контролируете тип элемента (например, у вас есть List<String> и вы хотите применить пользовательский порядок сортировки), вы реализуете Comparator<T> и передайте это как дополнительный параметр в Collections.sort

3 голосов
/ 26 июля 2011

Ваш класс должен реализовать интерфейс Comparable , чтобы sort работал.

2 голосов
/ 26 июля 2011

Вам нужно написать Comparator - обычно вы просто переопределяете метод сравнения, который возвращает int, + ve, 0 или -ve, чтобы указать «больше чем», «то же самое» или «меньше чем» «для любых определений из них вы выбираете. См. Другой из моих ответов для примера.

2 голосов
/ 26 июля 2011

Пусть ваш класс реализует интерфейс Comparable

1 голос
/ 26 июля 2011

Вы можете реализовать Comparable или передать Comparator в Collections.sort

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...