我正在考虑使用比较器对列表列表(在 ArrayList 上)进行排序。顺序最大的优先。所有子列表的大小始终相同。
例如,一个列表
[[4,5,6], [7,9,10], [4,7,8], [1,2,3], [7,9,12]]
这应该
[[7,9,12], [7,9,10], [4,7,8], [4,5,6], [1,2,3]]
我有类似的东西,但仅按每个列表中的第一项排序
List<List<Integer>> list = Arrays.asList(
Arrays.asList(4,5,6),
Arrays.asList(7,9,10),
Arrays.asList(4,7,8),
Arrays.asList(1,2,3),
Arrays.asList(7,9,12));
list.sort((l1, l2) -> l2.get(0).compareTo(l1.get(0)));
其产生:
[[7, 9, 10], [7, 9, 12], [4, 5, 6], [4, 7, 8], [1, 2, 3]]
如何编写一个比较器,如果前面的项目相等,则按列表中的下一个项目排序?
例如,[7, 9, 10]、[7, 9, 12] 应该先比较两个 7,然后比较两个 9,然后比较 10 和 12。例如,[4, 5, 6]、[4, 7, 8] 应该继续比较两个 4,然后比较 4 和 7,然后停止。