Как отсортировать список / 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.920.90.710.710.710.650.620.540.50.340.20.120.10.10.1
Переведено автоматически
Ответ 1
Collections.sort(testList);Collections.reverse(testList);
Это сделает то, что вы хотите. Однако не забудьте импортировать Collections!
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