Guava的Multimap转换为java.util.Map以及Map的 computeIfAbsent方法

1 篇文章 0 订阅

暂时使用到了这两种类型的转换:

第一种HashMultimap:(没有重复的value)

转换方式: (Map<String, List< String >>) (Map<?, ?>) map.asMap();

public Map<String,List<String>> getHashMap(){

        Multimap<String, String> map = HashMultimap.create();
        map.put("s", "1");
        map.put("s", "1");
        map.put("s", "2");
        map.put("s", "3");
        map.put("x", "3");
        map.put("e", "3");
        map.put("t", "4");
        map.put("i", "5");
        
        return  (Map<String, List<String>>) (Map<?, ?>) map.asMap();
    }

结果:

getHashMap() = {s=[1, 2, 3], t=[4], e=[3], x=[3], i=[5]}
第二种ArrayListMultimap:(有重复的value)

转换方式:Multimaps.asMap(map);

public Map<String,List<String>> getListMap(){

        ListMultimap<String, String> map = ArrayListMultimap.create();
        map.put("s", "1");
        map.put("s", "1");
        map.put("s", "2");
        map.put("s", "3");
        map.put("x", "3");
        map.put("e", "3");
        map.put("t", "4");
        map.put("i", "5");

        return Multimaps.asMap(map);
    }

结果:

getListMap() = {s=[1, 1, 2, 3], t=[4], e=[3], x=[3], i=[5]}

另附Map 的computeIfAbsent 方法:

public Map<String,List<Integer>> getMap(){

        Map<Integer, String> map = new HashMap<>();
        map.put(1,"yi");
        map.put(2,"yi");
        map.put(3,"yi");
        map.put(4,"er");
        map.put(5,"san");
        map.put(6,"si");
        map.put(7,"wu");

        Map<String, List<Integer>> listMap = new HashMap<>();
        map.forEach((key,value)->{
            List<Integer> list = listMap.computeIfAbsent(value,v->new ArrayList<>());
            list.add(key);
        });
        return listMap;
    }

结果:

getMap() = {yi=[1, 2, 3], san=[5], si=[6], er=[4], wu=[7]}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值