(Java 8)我有一个ArrayList of ArrayLists,如下所示:
5、10
2,11
1,12
8、13
我希望这些列表按列表中的第一个值按升序或降序排序。例如,通过升序,ArrayList将被排序为:
1,12
2,11
5、10
8、13
我该怎么做?
我正在努力使用比较器类。我所见过的其他文档提到了这些数据何时由数组表示(Arrays.sort然后在参数中定义一个比较器),但是当它是一个ArrayLists列表时,我就找不出解决方案了。
发布于 2022-03-27 19:16:03
使用Stream (Java 8):
public static void main(String[] args) {
List<List<Integer>> list = new ArrayList<>();
list.add(asList(5, 10));
list.add(asList(2, 11));
list.add(asList(1, 12));
list.add(asList(8, 15));
System.out.println("sorted asc = " + list.stream()
.sorted(Comparator.comparing(o -> o.get(0)))
.collect(Collectors.toList()));
System.out.println("sorted desc = " + list.stream()
.sorted((i, j) -> -i.get(0).compareTo(j.get(0)))
.collect(Collectors.toList()));
}
private static List<Integer> asList(Integer... arr) {
return Arrays.asList(arr);
}
排序asc = [1,12,2,11,5,10,8,15]
排序12= [8,15,5,10,2,11,1,12]
https://stackoverflow.com/questions/71639418
复制相似问题