根据两个优先元素对数组的数组列表进行排序

时间:2019-04-04 20:29:09

标签: java sorting arraylist

我有一个数组的ArrayList,我想根据数组的两个整数对其进行排序。我想基于降序对它们进行排序,然后根据数组中存在的另一个次级整数以降序对它们进行排序,同时保持一阶。

说我有一个带有[1,3]的array1;具有[1,1]的array2;具有[0,50]的array3。

首先,它们在ArrayList array1,array2和array3中未排序。 排序后,它们的顺序如下:array2,array1和array3。

2 个答案:

答案 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());