我有一个List<String>
我必须将其转换为Map
,通过分组相同的长度String
变成一个List
, using String
length 作为键,排序顺序。可以使用 -
Map<Integer, List<String>> result = new TreeMap<>();
for (String str : list) {
if (!result.containsKey(str.length())) {
result.put(str.length(), new ArrayList<>());
}
result.get(str.length()).add(str);
}
我们如何使用 Java 8 流来做到这一点?
Java 流可以使用分组收集器分组到一个映射中,最简单的方法是使用
Collectors.groupBy(comparator)
其中比较器将流式值转换为映射键。
返回的是从比较器键到条目列表的映射
public class Test {
public static void main(final String... args) {
List<String> in = Arrays.asList("A", "AB", "B", "ABC");
final Map<Integer, List<String>> all = in.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(all);
}
}
Output:
{1=[A, B], 2=[AB], 3=[ABC]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)