文章目录
1:集合体系图
Collection:单列集合,该接口有两个重要的子接口List Set,他们的实现子类都是单列集合
Map:双列集合,Map接口的实现子类,存放K-V
2:Map接口特点和方法
-
Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value
-
Map中的key和value 可以是任何引用类型的数据,会封装到HashMap$Node对象中
-
Map中的key不允许重复,原因和HashSet一样,前面分析过源码.(当有相同的k,就等价于替换,为什么呢?看如下的源码)
对应的HashMap源码中的
final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
//..
if (e != null) {
// existing mapping for key
V oldValue = e.value;
if (!onlyIfAbsent || oldValue == null)
e.value = value;
afterNodeAccess(e);
return oldValue;
}
//....
-
Map中的value可以重复
-
Map的key可以为null, value也可以为null ,
注意key为null,只能有一个,value为null ,可以多个.
-
常用String类作为Map的key
-
key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value
案例演示
public class Map_ {
public static void main(String[] args) {
Map hashMap = new HashMap();
hashMap.put("no1","zlj");
hashMap.put("no2","zzz");
hashMap.put("no1","zl");//当有相同的k,就等价于替换
hashMap.put("no3","zlj");
hashMap.put(null,null);
hashMap.put(null,"zzg");
hashMap.put("no4",null);
hashMap.put("no5",null);
System.out.println