关于Java Map 的几个常见数据处理方法

前面做了关于Map的学习,在JDK1.8之后,增加了关于Map几个实用的方法;
1.putIfAbsent
我们在使用map的put时可以向集合中增加数据,如果Key已经存在值则替换,而putIfAbsent 这个方法添加时如果Key存在值则不替换。

Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
map.putIfAbsent(3,"ssss");

map.forEach((k,v)->{
    System.out.println(v);
});

效果

aaa
bbb
fffs

2.getOrDefault
相关于数据库中的ISNULL(K,DEFAULT) 的方法,当我们根据key读取map时,而Key不存在,则返回一个默认值,如果存在则返回存在值。

Map<Integer,String> map=new HashMap<>();
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"fffs");

        String va=map.getOrDefault(4,"null");
        System.out.println(va);

运行结果

null

3.remove
如果根据key进行删除时直接只传key参数,如果把key与value一起传的话,当value与对应的值不同时则不删除

Map<Integer,String> map=new HashMap<>();
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"fffs");

        map.remove(1,"3333");//故意不同
        map.forEach((k,v)->{
            System.out.println(v);
        });

运行结果

aaa
bbb
fffs

4.replace
如果把key + 新的value +旧的value 一起传的话,当旧value与对应的值不同时则不替换

Map<Integer,String> map=new HashMap<>();
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"fffs");

        map.replace(1,"test","sss");;//故意不同
        map.forEach((k,v)->{
            System.out.println(v);
        });

效果

aaa
bbb
fffs

5.computeIfAbsent
当传入的比较值不存在时,处理新部分,当存在时会把新部分与旧部分发生关系。

Map<Integer,String> map=new HashMap<>();
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"fffs");

        map.computeIfAbsent(5,(va)->va+"xxxxxxx");//传入不存在值
        map.forEach((k,v)->{
            System.out.println(v);
        });

效果

aaa
bbb
fffs
5xxxxxxx

6.merge
合并,当存在时与旧部分进行合并,当不存在时则以新值存储。

Map<Integer,String> map=new HashMap<>();
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"fffs");

        map.merge(6,"9999",(vs1,vs2)->vs1+vs2);//传入不存在值
        map.forEach((k,v)->{
            System.out.println(v);
        });

效果

aaa
bbb
fffs
9999

仅收集这些,你觉得还有那些实用的欢迎留言评论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值