java如何使用流API按条件对行进行排序
我学习流API,我有这个任务。我需要按照列表集合的长度顺序对其进行排序,如果几行的长度相同,则按字母顺序进行排序
我的代码:
List<String> phones = new ArrayList<String>();
Collections.addAll(phones, "iPhone X", "Nokia 9", "Huawei Nexus 6P",
"Samsung Galaxy S8", "LG G6", "Xiaomi MI6", "Sony Xperia Z5",
"ASUS Zenfone 3", "Meizu Pro 6", "Heizu Pro 6",
"Pixel 2");
phones.stream().sorted(Comparator.comparingInt(String::length).reversed()).forEach(System.out::println);
我得到了这个输出:
Samsung Galaxy S8
Huawei Nexus 6P
Sony Xperia Z5
ASUS Zenfone 3
Meizu Pro 6
Heizu Pro 6
Xiaomi MI6
iPhone X
Nokia 9
Pixel 2
LG G6
如你所见
Sony Xperia Z5
ASUS Zenfone 3
和台词:
Meizu Pro 6
Heizu Pro 6
但我的结果必须是:
Samsung Galaxy S8
Huawei Nexus 6P
ASUS Zenfone 3
Sony Xperia Z5
Heizu Pro 6
Meizu Pro 6
Xiaomi MI6
iPhone X
Nokia 9
Pixel 2
LG G6
如何改进代码,以便在长度相同的情况下按字母顺序排序
我们如何在列表中收集结果>;?其中List <Pair <String, Long>
例如:
String a = Abcd;
list.add(new Pair(a, a.length));
# 1 楼答案
# 2 楼答案
将^{} 添加到比较器链中,以创建二级排序顺序。当主要排序不足时,将应用此选项: