Map继承自Map接口,实现对“key-value”形式的键值对的存储,通过key来查询calue。其中key要求唯一。
Map的有三个实现类:HashMap、TreeMap、HashTable
Map的常用方法:
put(key,value) 往map中添加key/value的元素、若不存在key,则将数据添加到map中,并返回null,若已存在key,则将原先的value覆盖,并返回被覆盖的value
putAll(map) 将map中的所有元素添加到该map中
remove(key) 将map中键为key的元素删除,返回被删除的value
containskey(key) 判断map中是否包含key,返回类型为boolean类型,包含返回true,不包含返回false
containsValue(value) 判断map中是否包含指定的value值。返回类型为boolean类型
size() 获取map元素的个数
isEmpty() 判断map中的元素是否为空,返回类型为boolean类型
keySet() 返回此map中所有的key组成的set集合。
values() 返回此map中所有的value组成的Collection
实现
以HashMap为例:HashMap<Object1,Object2> 对象名 = new HashMap<>();
等号右边的尖括号内在jdk1.7之后可以省略数据类型。Object1位key的数据类型,Object2为value'的数据类型
遍历
- 通过key的集合遍历
//通过keySet()获取map的key的集合,然后通过遍历key的集合来访问key对应的value
Set<Integer> set = map.keySet();
for(int num:set) {
System.out.println(map.get(num));
}
2.直接获取map中的value集
//values()方法返回Collection类型
Collection<String> set = map.values();
for(String str:set) {
System.out.println(str);
}
HashMap与TreeMap的比较
- HashMap基于哈希表的实现
TreeMap基于红黑树实现 - HashMap可以在构造方法中调优初始容量和负载因子,优化HashMap空间的使用
TreeMap没有调优选项,因为概述总处于平衡状态 - HashMap性能优于TreeMap
HashMap与HashTable的比较
- HashTable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现
- HashTable是线程安全的,也就是说同步的,而HashMap是线程不安全的,不同步的
- HashMap允许将null作为一个entry的key或者value,而HashTable不允许使用null