摘要
前面我们学习了list的相关知识,接下来来学习下Map的相关知识。我们将从以下几个方面进行阐述
1.Map集合的相关类图
2.Map的简介
3.AbstractMap的简介
4.SortedMap的简介
5.NavigableMap的简介
Map集合的相关类图
总结:
1. Map是一个映射接口,Map的存储内容是键值对
2. AbstractMap 实现了Map 接口中除了entrySet方法之外的大部分API。
3. SortedMap是继承于Map的接口,SortedMap的内容是排序的键值对。排序的方法是通过比较器
4. NavigableMap是继承于SortedMap的接口,与SortedMap相比,NavigableMap多了一系列导航的方法,如获取“大于/等于某对象的键值对”,“小于/等于某对象的键值对”
5. TreeMap继承于AbstractMap,且实现了NavigableMap,所以TreeMap可以保证是有序键值对。
6. HashMap 继承于AbstractMap,但没实现NavigableMap, 所以HashMap的内容是“键值对,但不保证次序”
Map的简介
Map的定义
public interface Map<K,V>{}
Map 是一个键值对的映射结构,Map 中键不可以重复,值可以重复,一个键最多映射一个值
Map 提供了三种Collection视图,允许以键集,值集和键-值映射关系集的形式来查看某个映射内容。
Map的映射顺序,有些实现类保证了顺序,如TreeMap,有些实现类则没有保证顺序,如HashMap。
Map的实现类应该提供两种构造器,一种是无参构造器,此构造器用于创建空映射,另一种是带一个Map参数的构造器,此构造器用于创建同该map等大小的映射。
Map的API
abstract void clear() abstract boolean containsKey(Object key) abstract boolean containsValue(Object value) abstract Set<Entry<K, V>> entrySet() abstract boolean equals(Object object) abstract V get(Object key) abstract int hashCode() abstract boolean isEmpty() abstract Set<K> keySet() abstract V put(K key, V value) abstract void putAll(Map<? extends K, ? extends V> map) abstract V remove(Object key) abstract int size() abstract Collection<V> values()
简要说明
1. Map接口分别提供了
entrySet() 返回键-值对关系集
keySet() 返回键集
values() 返回值集
2. Map 接口提供了一系列操作Map的方法,包括添加,移除元素等。
AbstractMap的简介
AbstractMap 的定义
public abstract class AbstractMap<K,V> implements Map<K,V> {}
说明:
1. AbstractMap 是一个实现了Map接口的抽象类,故其不能被实例化,只能作为其他实现类的父类
2. AbstractMap 实现了Map接口中的大部分方法。
3. 要实现不可修改的映射,开发人员只需扩展此类并提供entrySet方法的实现即可,该方法将返回映射关系set 视图,通常,返回的set将依次在AbstractSet上实现。此set不支持add()或者remove()方法,其迭代器也不支持remove() 方法。
4. 要实现可修改的映射,开发人员必须另外重写此类的put 方法(否则将抛出UnsupportedOperationException),entrySet().iterator() 返回的迭代器也必须另外实现其remove 方法。
AbstractMap 的API
abstract Set<Entry<K, V>> entrySet() void clear() boolean containsKey(Object key) boolean containsValue(Object value) boolean equals(Object object) V get(Object key) int hashCode() boolean isEmpty() Set<K> keySet() V put(K key, V value) void putAll(Map<? extends K, ? extends V> map) V remove(Object key) int size() String toString() Collection<V> values() Object clone()
SortedMap的简介
SortedMap的定义如下:
public interface SortedMap<K,V> extends Map<K,V> { }
SortedMap是一个继承于Map接口的接口。它是一个有序的SortedMap键值映射。SortedMap的排序方式有两种:自然排序或者用户指定比较器。插入有序SortedMap的所有元素都必须实现Comparable接口(或者被指定的比较器所接受)。
另外,所有SortedMap实现类都应该提供4个“标准”构造方法。
void (无参) 构造器,它创建一个空的有序映射,按照键的自然顺序进行排序。
带有一个Comparator类型参数的构造器,它将创建一个空的有序映射,根据指定的比较器进行排序。
带有一个Map类型参数的构造器,它将创建一个新的有序映射,其键-值映射关系与参数相同,按照键的自然顺序进行排序。
带有一个SortedMap类型参数的构造器,它创建一个新的有序映射,其键-值映射关系和排序方法与输入的有序映射相同。无法保证强制实施此建议,因为接口不能包含构造方法。
SortedMap的API
// 继承于Map的API abstract void clear() abstract boolean containsKey(Object key) abstract boolean containsValue(Object value) abstract Set<Entry<K, V>> entrySet() abstract boolean equals(Object object) abstract V get(Object key) abstract int hashCode() abstract boolean isEmpty() abstract Set<K> keySet() abstract V put(K key, V value) abstract void putAll(Map<? extends K, ? extends V> map) abstract V remove(Object key) abstract int size() abstract Collection<V> values() // SortedMap新增的API abstract Comparator<? super K> comparator() abstract K firstKey() abstract SortedMap<K, V> headMap(K endKey) abstract K lastKey() abstract SortedMap<K, V> subMap(K startKey, K endKey) abstract SortedMap<K, V> tailMap(K startKey)
NavigableMap的简介
NavigableMap的定义
public interface NavigableMap<K,V> extends SortedMap<K,V> { }
NavigableMap是一个继承于SortedMap的接口。它是一个可导航的键-值对集合。具有了为给定搜索目标报告最接近匹配项的导航方法。
NavigableMap分别提供了获取“键”,“键-值对”,“键集”,“键-值对集”的相关方法。
NavigableMap的API
abstract Entry<K, V> ceilingEntry(K key) abstract Entry<K, V> firstEntry() abstract Entry<K, V> floorEntry(K key) abstract Entry<K, V> higherEntry(K key) abstract Entry<K, V> lastEntry() abstract Entry<K, V> lowerEntry(K key) abstract Entry<K, V> pollFirstEntry() abstract Entry<K, V> pollLastEntry() abstract K ceilingKey(K key) abstract K floorKey(K key) abstract K higherKey(K key) abstract K lowerKey(K key) abstract NavigableSet<K> descendingKeySet() abstract NavigableSet<K> navigableKeySet() abstract NavigableMap<K, V> descendingMap() abstract NavigableMap<K, V> headMap(K toKey, boolean inclusive) abstract SortedMap<K, V> headMap(K toKey) abstract SortedMap<K, V> subMap(K fromKey, K toKey) abstract NavigableMap<K, V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) abstract SortedMap<K, V> tailMap(K fromKey) abstract NavigableMap<K, V> tailMap(K fromKey, boolean inclusive)
说明:
NavigableMap除了继承SortedMap的特性外,它提供的功能可以分为4类:
第1类,提供操作键-值对的方法。
lowerEntry、floorEntry、ceilingEntry和higherEntry方法,它们分别返回与小于,小于等于、大于等于、大于给定键的键关联的Map.Entry对象。
firstEntry、pollFirstEntry、lastEntry和pollLastEntry方法,它们返回和/或移除最小和最大的映射关系(如果存在),否则返回null。
第2类,提供操作键的方法。这个和第1类比较类似
lowerKey、floorKey、ceilingKey和higherKey方法,它们分别返回与小于、小于等于、大于等于、大于给定键的键。
第3类,获取键集
navigableKeySet、descendingKeySet分别获取正序/反序的键集。
第4类,获取键-值对的子集
引用
http://www.cnblogs.com/skywang12345/p/3308931.html
http://blog.csdn.net/eson_15/article/details/51150033