Сортировать список <T>объектов по определенному правилу? - PullRequest
1 голос
/ 15 октября 2011

У меня есть этот список:

List<Country> countryList = new ArrayList<Country>();

И я хочу отсортировать страны по названию, используя метод getCountry(). Как этого добиться?

UPDATE:

public class Country implements Comparable
@Override
public int compareTo(Object another) {
    // TODO Auto-generated method stub
    return 0;
}

Можете ли вы сказать, как их сравнивать, чтобы отсортировать по строкам? Аргентина, Австрия, Бразилия и др.

Ответы [ 3 ]

4 голосов
/ 15 октября 2011

Есть два способа:

  1. У Country реализован интерфейс java.util.Comparable для определения естественного упорядочения на ваших Country объектах, т.е. чтобы сами объекты "знали" свое упорядочение , Затем вы можете использовать Collections.sort(List) или просто переключиться с List на реализацию SortedSet, например TreeSet (если вам не нужны дубликаты, Set удаляет дубликаты)

  2. Напишите java.util.Comparator, чтобы определить наложенный порядок и позвоните Collections.sort(List, Comparator) или (снова потеряв дубликаты) пойти на new TreeSet(Comparator).

Реализация одного из этих двух вариантов достаточна для решения вашей проблемы - и Comparable, и Comparator могут быть объединены, однако: использование Comparator переопределит любой естественный порядок, определенный Comparable.

3 голосов
/ 15 октября 2011

Используйте встроенный метод сортировки и убедитесь, что вы внедрили сопоставимый для страны

3 голосов
/ 15 октября 2011

Вы можете вызвать Collections.sort (), предоставив Comparator, который сравнивает getCountry ().

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