【发布时间】:2018-09-10 05:48:05
【问题描述】:
我正在考虑使用比较器整理列表列表(在 ArrayLists 上)。订单最大的地方。所有子列表的大小始终相同。
例如,一个列表
[[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 并停止。
【问题讨论】:
-
这与字典顺序相同。您将如何使用
List<String>实现它? -
创建附加方法,该方法将遍历列表元素对,直到找到不相等的对。对于那对返回他们比较的结果。如果这样的对不存在,则返回 0,这将表示相等的列表。
标签: java algorithm sorting oop functional-programming