clean是清除所有键值对。
1.Map 与 Collection 并列存在,用于保存双列元素k-v 2.Map中的k,v可以是任何引用类型的数据,会封装到节点中。HashMpa$Node 3.Map的key不允许重复。 4.value可以重复。 5.k可以为null,v也可以为null,k只能有一个null,v可以有重复null。 6.通过k可以找到v。
Map map = new HashMap();
map.put("1","zuohaifeng");
map.put("2","孙悟空");
map.put("3","诸葛亮");
map.put("4","诸葛亮");
map.put(null,null);
map.put("a",null);
map.put(null,"b"); //等价于替换,和单列存储不同。
map.put("c",null);
map.put(1,new Object());
System.out.println("map=" + map);
System.out.println(map.get("2"));
1,为了程序员方便,创建EntrySet集合,该集合存放类型Entry,其实相当于一个node节点。即EntrySet<Entry<k,v>>
2,原因是node类实现了Map.Entry.
3.Map.Entry提供了重要方法getKey(),getValue().
4.EntrySet并不是新的节点,只是里边每个entry指向了hashmap中的节点node.
接着上面的代码。
Set set = map.entrySet();
System.out.println(set.getClass());//java.util.HashMap$EntrySet
for (Object o : set) {
//System.out.println(o.getClass());//HashMap$Node
Map.Entry entry = (Map.Entry) o;
System.out.println(entry.getKey()+"-"+entry.getValue());
}
Set set1 = map.keySet();//所有key集合
System.out.println(set1.getClass());//java.util.HashMap$KeySet
Collection values = map.values();//所有value集合
System.out.println(values.getClass());//java.util.HashMap$Values
以下开始遍历。
//遍历
//一、先取key,通过key取value值。
Set set2 = map.keySet();
//增强for
for (Object key : set2) {
System.out.println(key +"-" + map.get(key));
}
//迭代器
Iterator iterator = set2.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key +"-" + map.get(key));
}
//二、直接取value
Collection values = map.values();
//可以使用Collection使用的遍历方式。
//增强for
for (Object value : values) {
System.out.println(value);
}
//迭代器
Iterator iterator1 = values.iterator();
while (iterator1.hasNext()) {
Object next = iterator1.next();
System.out.println(next);
}
//三、使用entryset
Set entrySet = map.entrySet();
//增强for
for (Object entry : entrySet) {
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey()+"-"+m.getValue());
}
//迭代器
Iterator iterator2 = entrySet.iterator();
while (iterator2.hasNext()) {
Object next = iterator2.next();
System.out.println(next.getClass());
Map.Entry entry = (Map.Entry) next;
System.out.println(entry.getKey()+"-"+entry.getValue());
}
}
下面是一道题。