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 remappingFunction)
computeIfPresent(K key, BiFunction remappingFunction)
merge(K key, V value, BiFunction 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()
Java基础之138JDK8 Map新特性_第1张图片
之前没有getOrDefault方法时 取值还要判断一下是否为空 现在就不用了 直接取值
要是为空 返回我们给它的默认值


map.put

Java基础之138JDK8 Map新特性_第2张图片
直接使用put 如果key已经存在 则key不变 value值会覆盖掉
这里返回的是val之前的value值
但是map.putIfAbsent() 如果value值已存在 则不会更新 不会让你填进去
这个方法 只会添加不存在相同key的值
Java基础之138JDK8 Map新特性_第3张图片
Java基础之138JDK8 Map新特性_第4张图片


remove()
Java基础之138JDK8 Map新特性_第5张图片
Java基础之138JDK8 Map新特性_第6张图片
键值不匹配 不会执行删除操作
Java基础之138JDK8 Map新特性_第7张图片
键值匹配 才会执行删除操作


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

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


compute计算
Java基础之138JDK8 Map新特性_第8张图片
computeIfAbsent
如果为空的话 会操作 不为空 不操作
Java基础之138JDK8 Map新特性_第9张图片

Java基础之138JDK8 Map新特性_第10张图片


merge合并
Java基础之138JDK8 Map新特性_第11张图片
key存在 原来的值会加上
不存在就会直接创建
Java基础之138JDK8 Map新特性_第12张图片

你可能感兴趣的:(Java,Java基础,JDK8,Map新特性)