【发布时间】:2017-07-18 03:13:08
【问题描述】:
我想在 java 8 中将 Map <String, Integer> 从 List<String> 转换成这样的:
Map<String, Integer> namesMap = names.stream().collect(Collectors.toMap(name -> name, 0));
因为我有一个字符串列表,我想创建一个 Map,其中键是列表的字符串,值是整数(零)。
我的目标是计算字符串列表的元素(稍后在我的代码中)。
我知道以“旧”方式转换它很容易;
Map<String,Integer> namesMap = new HasMap<>();
for(String str: names) {
map1.put(str, 0);
}
但我想知道还有 Java 8 解决方案。
【问题讨论】:
-
只需将
0更改为name -> 0:Map<String, Integer> namesMap = names.stream().collect(Collectors.toMap(name -> name, name -> 0));但如果您有重复,这将失败。如果您想计算出现次数,请首先正确操作:Map<String, Long> namesMap = names.stream().collect(Collectors.groupingBy(name -> name, Collectors.counting()));而不是name -> name,您也可以使用Function.identity()。 -
哦,它正在工作,谢谢! :)
标签: java java-8 java-stream