Как отсортировать связанный список в Java по значению одного поля элемента? - PullRequest
2 голосов
/ 16 июня 2011

Я использую связанный список в моей java-программе, и элемент имеет пользовательский тип, который имеет три поля, одно из которых имеет тип Integer. Моя проблема: как отсортировать связанный список по значению поля Integer?

Ответы [ 4 ]

8 голосов
/ 16 июня 2011

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

Collections.sort(your_list, new Comparator<YoureValueType>(){
   @Override
   public int compare(YoureValueType o1, YoureValueType o2){
        if(o1.getMagicInt() < o2.getMagicInt()){
           return -1; 
        }
        if(o1.getMagicInt() > o2.getMagicInt()){
           return 1; 
        }
        return 0;
   }
}); 

Редактировать: Я только что видел комментарий Александра об очень больших и малых значениях в ответе Вальдхайнца. Я обновил свой код, чтобы отразить его аргумент.

3 голосов
/ 16 июня 2011

Вы можете использовать Comparator, который знает, как сортировать ваши объекты следующим образом:

public class Foo {

    public String ignoreMe;
    public int sortOnMe;
    public Object ignoreMeToo;

    public static void main() {
        final List<Foo> unsorted = new LinkedList<Foo>();

        // add elements...

        Collections.sort(unsorted, new Comparator<Foo>() {

            @Override
            public int compare(Foo o1, Foo o2) {
                return o1.sortOnMe < o2.sortOnMe ? -1 : o1.sortOnMe == o2.sortOnMe ? 0 : 1;
            }
        });

    }

}
1 голос
/ 16 июня 2011

Просто напишите класс, который реализует Comparator-Interface.

Чем использовать Collections.sort (список, компаратор) для сортировки списка.

Для получения дополнительной информации прочитайте этот урок

1 голос
/ 16 июня 2011

Вы можете использовать Пользовательский Comparator

См. Также

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