此代码可以缩短

时间:2017-03-14 00:37:41

标签: java dictionary

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,它会使代码很长。

2 个答案:

答案 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);
    }