我有一个数组的ArrayList,我想根据数组的两个整数对其进行排序。我想基于降序对它们进行排序,然后根据数组中存在的另一个次级整数以降序对它们进行排序,同时保持一阶。
说我有一个带有[1,3]的array1;具有[1,1]的array2;具有[0,50]的array3。
首先,它们在ArrayList array1,array2和array3中未排序。 排序后,它们的顺序如下:array2,array1和array3。
答案 0 :(得分:0)
您可以按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]);
}
我们使用Lambda表达式与Integer[]
进行比较
当您想对两个Integer
(A,B)进行降序排序时,必须像B-A
那样对它们进行比较,如果要升序排序,则应使用A-B
答案 1 :(得分:0)
使用Java8的单一代码
list.stream().sorted((prim, sec) -> prim[0] == sec[0] ? prim[1] - sec[1] : prim[0] - sec[0]).collect(Collectors.toList());