Java8:新Map方法操作

如果map不是null,忽略以下方法。

	List<User> userList = Lists.newArrayList();

    @Before
    public void initTest() {
        List<Address> addressList = Lists.newArrayList();
        addressList.add(Address.builder().area("铜山").city("徐州").build());
        addressList.add(Address.builder().area("江宁").city("南京").build());
        addressList.add(Address.builder().area("雨花").city("南京").build());
        userList.add(User.builder().name("张三").sex(1).age(40).addressList(addressList).build());
        userList.add(User.builder().name("里斯").sex(2).age(40).addressList(addressList).build());
        userList.add(User.builder().name("张三").sex(2).age(40).addressList(addressList).build());
        userList.add(User.builder().name("李四").sex(2).age(50).addressList(addressList).build());

    }
    /**
     * java8map用法,merge将重复key对应值合并到一起。
     */
    @Test
    public void mergeTest() {
        HashMap<String, Integer> map = Maps.newHashMap();

        userList.forEach(user -> {
            map.merge(user.getName(), user.getAge(), (o, n) -> o + n);
            //map.merge(user.getName(), user.getAge(), (o, n) -> o);若key重复,value不变。
        });

        map.forEach((k, v) -> System.out.println(k + "," + v));
        /**
         * 李四,50
         * 里斯,40
         * 张三,80
         */
    }

    /**
     * user: computeIfAbsent若map中存在key,取原有key对应value,否则取新的
     */
    @Test
    public void computeIfAbsentTest() {
        //list
        HashMap<String, List<User>> map = Maps.newHashMap();
        ArrayList<User> objects = Lists.newArrayList();
        objects.add(User.builder().name("张三").sex(1).age(40).build());
        map.put("k", objects);

        //User
        HashMap<String, User> maps = Maps.newHashMap();
        maps.put("k", new User().setName("hs1").setAge(4).setSex(1));

        maps.computeIfAbsent("k", l -> new User().setName("hs").setAge(90));

        maps.forEach((k, v) -> System.out.println(k + "," + v));
        /**
         * k,User(name=hs, sex=1, age=90, addressList=null)
         */
    }

    /**
     * putIfAbsent若map中存在key,取原有key对应value,否则取新的
     */
    @Test
    public void putIfAbsentTest() {
        HashMap<String, User> maps = Maps.newHashMap();
        maps.put("k", new User().setName("hs1").setAge(4).setSex(1));

        maps.putIfAbsent("k", new User());

        System.out.println(maps.get("k"));
    }

    /**
     * 两个参数
     */
    @Test
    public void computeTest() {
        HashMap<String, User> maps = Maps.newHashMap();
        maps.put("k", new User().setName("hs1").setAge(4).setSex(1));

        maps.compute("k", (k, v) -> v);

        System.out.println(maps.get("k"));
        /**
         * User(name=hs1, sex=1, age=4, addressList=null)
         */
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值