Map<String, List<String>> hash = new HashMap<String, List<String>>();
for (String s: dict){
hash.compute(s.substring(2)),
(k, v)-> { if (v == null){
return new ArrayList<>(Arrays.asList(s));
}
else{
v.add(s);
}
return v;
});
}
有没有办法让计算部件更干净?添加方法不会返回List,它会使代码很长。
答案 0 :(得分:0)
你能尝试吗?
如果 dist 一个集合
Map<String, List<String>> hash = dict.stream().collect(Collectors.groupingBy(o -> o.substring(2)));
或 dist 数组
Map<String, List<String>> collect = Stream.of(dist).collect(Collectors.groupingBy(o -> o.substring(2)));
答案 1 :(得分:0)
罗马的回答可能是现在最流行的Java语言。
如果您希望保持与您目前使用的结构类似的结构:
Map<String, List<String>> hash = new HashMap<>();
for (String s: dict) {
hash.computeIfAbsent(s.substring(2), k -> new ArrayList<>()).add(s);
}