Map的接口特点
key重复时会进行替换
package com.edu.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@SuppressWarnings({"all"})
public class Demo01 {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put("no1","韩顺平");
map.put("no2","张无忌");
//1、k-v最后都是 HashMap$Node node = newNode(hash,key,value,null)
//2、k-v为了方便遍历,还会创建 EntrySet集合,该集合存放的元素类型就是Entry,装的是Node<k v>地址指向
// 而一个Entry对象就有key value EntrySet<Entry<K,V>> 也就是Set<Map.Entry<K,V>> entrySet
//3、entrySet中,定义的类型是Map.Entry,但是实际上存放的还是HashMap$Node
// 因为 static class Node<K,v> implements Map.Entry<K,V>
//4、当把HashMap$Node 对象存放到 EntrySet 就方便我们的遍历,Map.Entry提供了两个重要的方
// getkey() 和 getValue()
Set set = map.entrySet();
System.out.println(set.getClass());//HashMap$EntrySet
for(Object obj:set){
System.out.println(obj.getClass());//HashMap$Node 接口实现 向上转型了
//1、向下转型 因为是Object接受的
Map.Entry entry = (Map.Entry)obj;
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
}