Java基础之138JDK8 Map新特性

集合框架Map接口
1.8 Map接口的新方法:
在JDK8中Map接口提供了一些新的便利的方法。因为在本文中我所提到的所有Map方法都是以默认值方法的方式实现的,所以现有的Map接口的实现可以直接拥有这些在默认值方法中定义的默认行为,而不需要新增一行代码。
getOrDefault(Object, V)
putIfAbsent(K,V)
remove(Object key, Object value)
replace(K,V)
replace(K,V,V)
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)

package com.vince;

import java.util.HashMap;
import java.util.Map;

/**
 * Map接口1.8新增方法介绍
 * @author vince
 * @description
 */
public class MapNewMethodDemo {

	public static void main(String[] args) {

		Map<Integer,String> map = new HashMap<>();
		map.put(1, "jack");
		map.put(2, "tom");
		map.put(3, "lily");
		
		String value = map.getOrDefault(4, "null");
		System.out.println(value);
		
//		String s = map.get(5);
//		if(s==null){
//			System.out.println();
//		}else{
//			
//		}
//		
//		String val = map.put(3,"vince");
//		System.out.println(val);
		
		//只会添加不存在相同key的值
//		String val = map.putIfAbsent(3, "vince");
//		System.out.println(val);
		
//		map.forEach((k,v)->System.out.println(k+"->"+v));
		//根据键和值都匹配时才删除
//		map.remove(1, "jack");
		
//		map.replace(3, "vince");
//		map.replace(3, "lily", "vince");
		
		//map.compute(1, (k,v1)->v1+"1");
//		map.computeIfAbsent(5,(val)->val+"test");
		
		map.merge(8, "888", (oldVal,newVal)->oldVal.concat(newVal));
		
		map.forEach((k,v)->System.out.println(k+"->"+v));
	}

}


map.getOrDefault()
在这里插入图片描述
之前没有getOrDefault方法时 取值还要判断一下是否为空 现在就不用了 直接取值
要是为空 返回我们给它的默认值


map.put

在这里插入图片描述
直接使用put 如果key已经存在 则key不变 value值会覆盖掉
这里返回的是val之前的value值
但是map.putIfAbsent() 如果value值已存在 则不会更新 不会让你填进去
这个方法 只会添加不存在相同key的值
在这里插入图片描述
在这里插入图片描述


remove()
在这里插入图片描述
在这里插入图片描述
键值不匹配 不会执行删除操作
在这里插入图片描述
键值匹配 才会执行删除操作


map.replace(3, “vince”); 替换操作 根据key替换value

map.replace(3, “lily”, “vince”); 替换操作 但只有原来的value匹配 才会替换


compute计算
在这里插入图片描述
computeIfAbsent
如果为空的话 会操作 不为空 不操作
在这里插入图片描述

在这里插入图片描述


merge合并
在这里插入图片描述
key存在 原来的值会加上
不存在就会直接创建
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值