Вопрос-ответ

How to sort a List/ArrayList?

Как отсортировать список / ArrayList?

У меня есть список двойников в java, и я хочу отсортировать ArrayList в порядке убывания.

Входной ArrayList выглядит следующим образом:

List<Double> testList = new ArrayList();

testList.add(0.5);
testList.add(0.2);
testList.add(0.9);
testList.add(0.1);
testList.add(0.1);
testList.add(0.1);
testList.add(0.54);
testList.add(0.71);
testList.add(0.71);
testList.add(0.71);
testList.add(0.92);
testList.add(0.12);
testList.add(0.65);
testList.add(0.34);
testList.add(0.62);

Вывод должен быть таким

0.92
0.9
0.71
0.71
0.71
0.65
0.62
0.54
0.5
0.34
0.2
0.12
0.1
0.1
0.1
Переведено автоматически
Ответ 1
Collections.sort(testList);
Collections.reverse(testList);

Это сделает то, что вы хотите. Однако не забудьте импортировать Collections!

Вот документация для Collections.

Ответ 2

По убыванию:

Collections.sort(mArrayList, new Comparator<CustomData>() {
@Override
public int compare(CustomData lhs, CustomData rhs) {
// -1 - less than, 1 - greater than, 0 - equal, all inversed for descending
return lhs.customInt > rhs.customInt ? -1 : (lhs.customInt < rhs.customInt) ? 1 : 0;
}
});
Ответ 3

Для вашего примера это сотворит чудо в Java 8

List<Double> testList = new ArrayList();
testList.sort(Comparator.naturalOrder());

Но если вы хотите выполнить сортировку по некоторым полям сортируемого объекта, вы можете легко сделать это с помощью:

testList.sort(Comparator.comparing(ClassName::getFieldName));

или

 testList.sort(Comparator.comparing(ClassName::getFieldName).reversed());

или

 testList.stream().sorted(Comparator.comparing(ClassName::getFieldName).reversed()).collect(Collectors.toList());

Источники: https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html

Ответ 4

Используйте метод util класса java.util.Collections, т.е

Collections.sort(list)

На самом деле, если вы хотите отсортировать пользовательский объект, вы можете использовать

Collections.sort(List<T> list, Comparator<? super T> c) 

смотрите collections api

java list arraylist collections