本篇是Collection与Map学习笔记第三篇,主要来总结Map接口及其实现类。
1.Map综述
Map接口用来储存“键值对”。Map接口主要有四个实现类:HashMap、TreeMap、Hashtable、WeakHashMap.
Map的子接口有:AbstractMap、SortedMap、NavigableMap.
AbstractMap是个抽象类,继承了Map大部分接口。
SortedMap除集成Map的接口以外,还可以进行排序。排序利用的方法是比较器(Comparator).所以实现SortedMap的类储存的是有序的键值对。
NavigableMap是SortedMap的子接口,除了可以排序以外,还提供了一系列导航方法:如"获取大于/等于某对象的键值对"、“获取小于/等于某对象的键值对”等等。
HashMap继承了AbstractMap,但没有实现Navigable接口,存储的是“键值对,但无序”。
TreeMap继承了AbstractMap,还实现Navigable接口,存储的是“键值对,并且有序”。
Hashtable集成了Dictionary,并实现了Map接口。存储的是“键值对,但无序”。与HashMap相比,Hashtable是线程安全的。并且支持通过Enumeration遍历。
WeakHashMap也继承与AbstractMap,与HashMap不同的是WeakHashMap的键是“弱键”。
1.1Map接口的API
clear() 清除对象中所有元素
put(k,v) 将一个键值对加入键值对集合。
putAll(Map<> map> 讲一个键值对集合放入
entrySet() 键值对集合的所有键值对的Set集合
keySet() 键值对集合的key 的Set集合
values() 键值对集合的value集合,返回值类型为Collection
size() 键值对集合的大小
isEmpty() 键值对集合是否为空
get(key) 通过key获得对应的value
remove(key) 删除对应key的键值对
containskey(key) 是否包含key
containsvalue(value) 是否包含value
hashCode() 获得哈希值
equals(Object obj) 判断是否相等
1.2Map.Entry
Map.Entry是Map内部的接口,Map.Entry是键值对。Map的实现类对象,可以通过entrySet()方法获得键值对集合。然后可以利用Map.Entry提供方法获得key/value/重置value等操作。
常用方法有:
getKey()
getValue()
setValue(newvalue)
hashCode()
equals(Object obj)