package com.wq.Map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class map02 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("no1","king");//k-v
map.put("no2","god");//k-v
//1. k-v 最后是 hashmap$node node = newnode (hash ,key ,value , null)
//2. k-v 为方便遍历 还会创建 Entryset 集合 该集合存放的元素的类型 Entry 而一个
// Entry 对象就有 k-v Entryset<Entry<k,v>> 即源码: transient Set<Map.Entry<K,V>> entrySet;
//3. entryset 中 定义的类型是 map.entry 但是实际上存放的还是 hashmap$node
// 这是因为 static class Node <k,v> implements map.Entry<k,y>
//4. 当把 hashmap$node 对象 存放 entryset 就方便遍历 因为 map.entry 提供重要方法
// k getkey () v getvalue
Set set = map.entrySet();
System.out.println(set.getClass());//class java.util.HashMap$EntrySet
for (Object obj :set) {
//为了从hashmap$node 取出k-v
// 1. 向下转型
Map.Entry entry = (Map.Entry) obj;
System.out.println(entry.getKey()+" + " +entry.getValue());
Set set1 = map.keySet();
System.out.println(set1.getClass());
Collection values = map.values();
System.out.println(values.getClass());
}
}
}
class java.util.HashMap$EntrySet
no2 + god
class java.util.HashMap$KeySet
class java.util.HashMap$Values
no1 + king
class java.util.HashMap$KeySet
class java.util.HashMap$Values