HashMap:
1.key是用Set来存放的,不可重复;value是用Collection存放的,可以重复
一个key-value对是一个Entry,所有的Entry是用Set来存放的,也是不可重复的
2.向HashMap里面添加元素时,会调用key所在类的equals()方法,如果key相同,则后者覆盖前者存储在内存中
以下是Map集合常用的方法:
1.put(Object key, Object value) 将相互关联的一个key和value放入该集合,如果此map接口已经包含了key对应的value,则旧值将被代替
2.remove(Object key) 从当前集合中移除与指定key相关的映射,并返回该key关联的旧value。如果key没有任何关联,则返回null
3.int size() 返回集合中元素的数量
4.void clear() 清空集合中的元素
5.Object get(Object key) 获取key相关的value,如果该key不关联任何非null值,则返回null
6.boolean containsKey(Object key) 判断集合中是否存在key
7.boolean containsValue(Object value) 判断集合中是否存在value
8.boolean isEmpty() 判断集合中是否包含元素
9.Set keySet() 获取所有的key的集合
10.Collection values() 获取所有的value的集合
11.Set entrySet() 遍历Map集合专用方法
注意:上面标红的方法是遍历Map集合的主要方法,使用最多的是keySet()和values()这两种方法,但是推荐使用entrySet()方法
@Test
public void testMap() {
Map map = new HashMap();
map.put("刘德华", 525);
map.put("范冰冰", 777);
map.put(666, 525);
//map.put(null, null);//Map集合可以存放null元素,但是遍历的时候会报空指针异常
map.put(new Person("hehe", 18), 123);
//方式一:得到所有的key或者所有的values
for (Object key : map.keySet()) {
System.out.println(key.toString());
}
for (Object value : map.values()) {
System.out.println(value.toString());
}
//方式二:使用迭代器遍历所有的键和值
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
Iterator iter = map.values().iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
//方式三:使用entrySet()方法来遍历Map集合
Set entry = map.entrySet();
for (Object obj : entry) {
Map.Entry hehe = (Map.Entry)obj;
System.out.println(hehe.getKey() + "&&" + hehe.getValue());
//也可以直接打印hehe
System.out.println(hehe);
}
}