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