有人可以建议我如何将["bla", "blabla", "blablabla"]
之类的列表转换为像{"bla" : 3, "blabla" : 6, "blablabla" : 9}
这样的地图,其中单词代表键,值代表单词长度?
我做的事情如下:
Map<String, Integer> map = list.stream().collect(Collectors.groupingBy(Function.identity(), String::length));
但没有运气。
谢谢!
答案 0 :(得分:6)
groupingBy
几乎正确,但第二个参数是Collector
,而不是Function
。因此我使用了toMap
。
Map<String, Integer> map = Stream.of("bla", "blabla", "blablabla").distinct()
.collect(Collectors.toMap(Function.identity(), String::length));
答案 1 :(得分:0)
你不必做那么复杂的事情。 这是一个示例代码:
...
...
List<String> ll= // the list of words that you have.
Map<String,Integer> map = new HashMap<>();// or any other kind of map you want to create
for(String s:ll){
map.put(s,s.length());
}
现在您的map
符合您的要求。