如何在 Java 中对 ArrayList 的 ArrayList 进行排序(通过其中一个变量)?
How to sort an ArrayList of ArrayLists (by one of the variables) in Java?
(Java 8) 我有一个 ArrayList 的 ArrayList 如下:
[5, 10]
[2, 11]
[1, 12]
[8, 13]
我希望这些列表按列表中的第一个值按升序或降序排序。例如,按升序排列,ArrayList 将被排序为:
[1, 12]
[2, 11]
[5, 10]
[8, 13]
我该怎么做?
我正在努力使用比较器 class。我看到的其他文档是指当此数据由数组表示时(Arrays.sort 然后在参数中定义一个比较器),但是当它是 ArrayLists 的列表时我无法找出解决方案。
与流 API (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);
}
按升序排列 = [[1, 12], [2, 11], [5, 10], [8, 15]]
sorted desc = [[8, 15], [5, 10], [2, 11], [1, 12]]
(Java 8) 我有一个 ArrayList 的 ArrayList 如下:
[5, 10]
[2, 11]
[1, 12]
[8, 13]
我希望这些列表按列表中的第一个值按升序或降序排序。例如,按升序排列,ArrayList 将被排序为:
[1, 12]
[2, 11]
[5, 10]
[8, 13]
我该怎么做?
我正在努力使用比较器 class。我看到的其他文档是指当此数据由数组表示时(Arrays.sort 然后在参数中定义一个比较器),但是当它是 ArrayLists 的列表时我无法找出解决方案。
与流 API (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);
}
按升序排列 = [[1, 12], [2, 11], [5, 10], [8, 15]]
sorted desc = [[8, 15], [5, 10], [2, 11], [1, 12]]