Map接口和常用方法
Map接口实现类的特点
注意:是JDK8的Map接口特点
- Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value
- Map中的 key 和 value可以是任何引用类型的数据,会封装到HashMap$Node对象中
- Map中的key 不允许重复,原因和HashSet一样,前面分析过源码.
- Map 中的value可以重复
- Map 的key 可以为null, value也可以为null,注意key为null,只能有一个,value为null ,可以多个.
- 常用String类作为Map的key
- key和 value之间存在单向一对一关系,即通过指定的key 总能找到对应的 value
- Map存放数据的key-value示意图,一对k-v是放在一个Node中的,又因为Node实现了 Entry 接口,有些书上也说一对k-v就是一个Entry(如图)
import java.util.HashMap;
import java.util.Map;
public class Map_ {
public static void main(String[] args) {
//接口实现类的特点,使用实现类HaspHap
//1.Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value(双列元素)
//2.Map中的 key 和 value可以是任何引用类型的数据,会封装到HashMap$Node对象中
//3.Map中的key 不允许重复,**原因和HashSet一样,前面分析过源码.**
//4.Map 中的value可以重复
//5.Map 的key 可以为null, value也可以为null,注意key为null,只能有一个,value为null ,可以多个.
//6.常用String类作为Map的key
Map map = new HashMap();
map.put("no1", "test1");//k-v
map.put("no2", "test2");//k-v
map.put("no1", "test3");//当有相同的k,就等价于替换。
map.put("no3", "test3");//k-v
map.put(null, null);//k-v
map.put(null, "abc");//等价替换
map.put("no4", null);//k-v
map.put("no5", null);//k-v
map.put(1, "test4");//k-v
map.put(new Object(), "test5");//k-v
//通过get方法,传入key,会返回对应的value
System.out.println(map.get("no2"));//test2
System.out.println("map = " + map);
}
}