【发布时间】:2021-07-05 19:16:18
【问题描述】:
我有一个包含这种格式的字符串的列表:
List<String> ids = new ArrayList<>();
ids.add("B-7");
ids.add("B-5");
ids.add("A-3");
ids.add("B-8");
ids.add("B-1");
ids.add("B-6");
ids.add("B-2");
ids.add("B-3");
ids.add("B-10");
ids.add("A-1");
ids.add("B-4");
ids.add("B-9");
ids.add("A-2");
我需要对其进行排序以获得此输出,(遍历列表):
A-1
A-2
A-3
B-1
B-2
B-3
B-4
B-5
B-6
B-7
B-8
B-9
B-10
我正在使用:
List<String> sortedIds = ids.stream().sorted().collect(Collectors.toList());
但是,我的输出:
A-1
A-2
A-3
B-1
B-10 -- Error
B-2
B-3
B-4
B-5
B-6
B-7
B-8
B-9
【问题讨论】:
-
这是文档派上用场的地方。如果您查看
Stream#sorted(),请注意它显示“按自然顺序排序”。正如您所展示的,您不想要自然顺序,而是想要以不同的方式对其进行排序。 Java 遥遥领先;它有一个overloaded method,可以让你指定一个自定义比较器。