#java #sorting #arraylist
#java #сортировка #список массивов
Вопрос:
У меня есть список массивов, который я хочу отсортировать на основе двух целых чисел массивов. Я хочу отсортировать их на основе первичного целого числа в порядке убывания, затем отсортировать их на основе другого вторичного целого числа, существующего в массивах в порядке возрастания, сохраняя при этом первый порядок.
Допустим, у меня есть array1 с [1, 3]; array2 с [1, 1]; array3 с [0, 50].
Сначала они не сортируются в списке массивов array1, array2 и array3. После сортировки они располагаются в следующем порядке: array2, array1 и array3.
Комментарии:
1. ОК. но тело вашего вопроса — это просто описание задачи. в чем ваш вопрос?
2. Нам нравится, что вы здесь, и нам нужен ваш код, чтобы мы могли помочь вам исправить это.
Ответ №1:
вы можете отсортировать список по Collections.sort
.
public void sort(List<Integer[]> list)
return Collections.sort(list, (o1, o2) -> o1[0].equals(o2[0]) ? o1[1] - o2[1] : o1[0] - o2[0]);
}
мы используем лямбда-выражение для сравнения с Integer[]
когда вы хотите отсортировать два Integer
(A, B) по убыванию, вы должны сравнить их следующим образом B-A
, и если вы хотите отсортировать по возрастанию, вы должны использовать A-B
Ответ №2:
Однострочный с java8
list.stream().sorted((prim, sec) -> prim[0] == sec[0] ? prim[1] - sec[1] : prim[0] - sec[0]).collect(Collectors.toList());