Java8Map的API笔记

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.concurrent.CountDownLatch;

public class MapTestInJava8 {
    public static Map<String, String> map = new HashMap<>();
    static {
        map.put("a", "A");
        map.put("b", "B");
        map.put("c", "C");
    }

    public static void main(String[] args) {
//        compute();
        merge();
    }


    /**
     * 使用lambda表达式的计算结果赋值到给定的key上
     * (k,v)-{}  k为入参Key的值,即给定的Key。v为给定key在原Map中的旧值。
     * compute方法返回值为入参Key的最终值
     */
    public static void compute(){
        String result = map.compute("A", (k, v) -> {
            System.out.println(k); // A
            System.out.println(v); // null
            return "aa";
        });
        System.out.println(result); // aa

        String result1 = map.compute("a", (k, v) -> {
            System.out.println(k); // a
            System.out.println(v); // A
            return "bb";
        });
        System.out.println(result1); // bb

        System.out.println(map); // {A=aa, a=bb, b=B, c=C}
    }


    /**
     * 当入参Key不存在时,执行lambda表达式计算,将计算结果赋值到入参Key
     * (k)->{}  k为入参Key的值
     * computeIfAbsent方法返回值为入参Key的最终值
     */
    public static void computeIfAbsent(){
        String result = map.computeIfAbsent("a", (k) -> {
            System.out.println(k); // 未执行
            return k;
        });
        System.out.println(result);// "A"

        String result1 = map.computeIfAbsent("aa", (k) -> {
            System.out.println(k);// "aa"
            return k.toUpperCase();
        });
        System.out.println(result1);// "AA"
    }

    /**
     * 当入参Key存在时,执行lambda表达式计算,将计算结果赋值到入参Key
     * (k,v)-{} k为入参Key的值,即给定的Key。v为给定key在原Map中的旧值。
     * computeIfPresent 方法返回值为入参Key的最终值
     */
    public static void computeIfPresent(){
        String result = map.computeIfPresent("a", (k,v) -> {
            System.out.println(k); // "a"
            System.out.println(v); // "A"
            return k + v;
        });
        System.out.println(result);// "aA"

        String result1 = map.computeIfPresent("aa", (k,v) -> {
            System.out.println(k);//  未执行
            System.out.println(v);//  未执行
            return k.toUpperCase();
        });
        System.out.println(result1);// "null"
    }

    /**
     * 使用给定的Value覆盖入参Key对应的旧Value
     * put方法出参为原Map中的旧值
     */
    public static void put(){
        String result = map.put("a" , "aaa");
        System.out.println(result);// "A"

        String result1 = map.put("A", "a");
        System.out.println(result1);// "null"
    }

    /**
     * 当入参Key不存在时,使用给定的Value覆盖入参Key对应的旧Value
     * put方法出参为原Map中的旧值
     */
    public static void putIfAbsent(){
        String result = map.putIfAbsent("a" , "aaa");
        System.out.println(result);// "A"
        System.out.println(map.size()); // 3

        String result1 = map.putIfAbsent("A", "a");
        System.out.println(result1);// "null"
        System.out.println(map.size()); // 4
    }

    /**
     * 使用给定的Value与入参Key对应的旧值进行合并
     * (v1,v2)->{} v1为入参Key对应的旧值  v2为入参给定的value值
     * merge方法返回值为入参Key的最终值
     */
    public static void merge(){
        String result = map.merge("a" , "aaa", (v1,v2)->{
            System.out.println(v1); // "A"
            System.out.println(v2); // "aaa"
            return v1+v2;
        });
        System.out.println(result); // "Aaaa"
    }
}

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值