Java 这个代码能短一点吗 Map hash=newhashmap(); for(字符串s:dict){ hash.compute(s.substring(2)), (k,v)->{if(v==null){ 返回新的ArrayList(Arrays.asList); } 否则{ v、 添加(s); } 返回v; }); }

Java 这个代码能短一点吗 Map hash=newhashmap(); for(字符串s:dict){ hash.compute(s.substring(2)), (k,v)->{if(v==null){ 返回新的ArrayList(Arrays.asList); } 否则{ v、 添加(s); } 返回v; }); },java,dictionary,Java,Dictionary,有没有办法让计算部分更干净?add方法不返回列表,它使代码非常长。您能试试吗 如果dist一个集合 Map<String, List<String>> hash = new HashMap<String, List<String>>(); for (String s: dict){ hash.compute(s.substring(2)), (k, v)-> { if (v == null){

有没有办法让计算部分更干净?add方法不返回列表,它使代码非常长。

您能试试吗

如果dist一个集合

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;
        });
    }
Map hash=dict.stream().collect(收集器.groupingBy(o->o.substring(2));
或者如果dist数组

Map<String, List<String>> hash = dict.stream().collect(Collectors.groupingBy(o -> o.substring(2)));
Map collect=Stream.of(dist.collect)(收集器.groupingBy(o->o.substring(2));

Roma的答案很可能是现在有了streams之后最惯用的Java语言

如果您想保持与当前拥有的结构相似,您可以使用:

Map<String, List<String>> collect = Stream.of(dist).collect(Collectors.groupingBy(o -> o.substring(2)));
Map hash=newhashmap();
for(字符串s:dict){
computeIfAbsent(s.substring(2),k->newArrayList()).add(s);
}

我们猜猜这是什么语言…?另外:谢谢,答案真的很有帮助。这种方式非常干净整洁。谢谢,当我投票给你的答案时,它说:“谢谢你的反馈!声誉低于15的人所投的票会被记录下来,但不会改变公开显示的帖子分数。”
    Map<String, List<String>> hash = new HashMap<>();
    for (String s: dict) {
        hash.computeIfAbsent(s.substring(2), k -> new ArrayList<>()).add(s);
    }