【发布时间】:2019-01-20 08:17:52
【问题描述】:
我在研究流,我遇到了一个问题。我有一个列表,我需要按字符串的长度排序,所有匹配大写字符的字符串,如果没有,则按字母排序。
List<String> phones = new ArrayList<>();
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().filter(s -> s.matches("A-Z")).sorted(Comparator.comparingInt(String::length)).forEach(System.out::println);
我尝试使用匹配,但我在某处犯了错误,因为没有任何输出。我该如何解决这个问题?
【问题讨论】:
-
1.您的过滤条件不合适。 2. 即使您进行过滤,您也无法然后按字母排序。 对于剩余的元素.. 您只是对 (1) 感兴趣吗?
-
您能否举一个您所期望的示例?
标签: java java-stream