Java排序列表

如何使用Collections.sort()或其他排序方法按字典顺序对Java列表进行排序?

private List<List> possiblePoles = setPoles(); System.out.println(possiblePoles) [[1, 3, 5], [1, 2, 3]] 

您必须实现自己的Comparator类并将实例传递给Collections.sort()

 class ListComparator> implements Comparator> { @Override public int compare(List o1, List o2) { for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) { int c = o1.get(i).compareTo(o2.get(i)); if (c != 0) { return c; } } return Integer.compare(o1.size(), o2.size()); } } 

然后排序很容易

 List> listOfLists = ...; Collections.sort(listOfLists, new ListComparator<>()); 

使用Java 8流API改进了MartinS的答案

 possiblePoles = possiblePoles.stream().sorted((o1,o2) -> { for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) { int c = o1.get(i).compareTo(o2.get(i)); if (c != 0) { return c; } } return Integer.compare(o1.size(), o2.size()); }).collect(Collectors.toList());