Java8新特性——Map的新方法

@Test
public void testMap(){
    Map<Integer, String> map = new HashMap<>();
    for (int i = 0; i <10; i++){
        //putIfAbsent 使得我们不用写是否为 null 值的检测语句
        map.putIfAbsent(i, "val_" + i);
    }
    //-------1------maps不支持流。然而现在maps包括了许多新的非常有用的方法用于执行通用任务:
    //forEach使用consumer来对map中的每个元素进行操作,执行通用任务。
    map.forEach((key, value) -> System.out.print(key + " : " +value + "; ") );
    System.out.println();

    //----------2-------------------使用功能性函数在map里执行代码:
    //将key为3对应的值(val_3)改为  "val_3"+3*10 = val_330
    map.computeIfPresent(3, (key, val) -> val + key*10);
    System.out.println(map.get(3)); //val_330

    //将key为9对应的值(val_9)改为  null
    map.computeIfPresent(9, (key, val) -> null);
    System.out.println(map.containsKey(9));  // false   相当于从map中移除了此项


    //将key为23对应的值(null)改为  "val_23"
    map.computeIfAbsent(23, num -> "val_" + num);
    System.out.println(map.containsKey(23)); //true
    map.forEach((key, value) -> System.out.print(key + " : " +value + "; ") );
    System.out.println();


    map.put(3, null);
    //如果key为3对应的值为null, 将其值改为"bam"
    map.computeIfAbsent(3, num -> "bam");
    System.out.println(map.get(3)); // bam

    //---------3--------------删除给定键所对应的元素。删除操作还需要满足给定的值需要和map中的值相等:
    map.remove(3, "val3");
    System.out.println(map.get(3));;             // bam

    map.remove(3, "bam");
    System.out.println(map.get(3));;             // null

    //----------4--------其他一些帮助性方法:
    map.getOrDefault(44, "404 not found");

    //---------------5----------------合并map中的实体
    //此时map.get(9)=null
    map.merge(9, "val999", (value, newValue) -> value.concat(newValue));
    System.err.println(map.get(9));// val999

    map.merge(9, "concat", (value, newValue) -> value.concat(newValue));
    System.err.println(map.get(9));// val999concat


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值