Java集合系列06之Map接口概览

系列文章

  • Java集合系列01之概览
  • Java集合系列02之ArrayList源码分析
  • Java集合系列03之LinkedList源码分析
  • Java集合系列04之fail-fast机制分析
  • Java集合系列05之Vector&Stack源码分析及List总结
  • Java集合系列06之Map接口概览
  • Java集合系列07之HashMap源码分析
  • Java集合系列08之WeakHashMap源码分析
  • Java集合系列09之TreeMap源码分析
  • Java集合系列10之Hashtable源码分析

前言

前面介绍集合的框架时,我们提到集合框架中主要有ListSetMap三种数据类型,List我们已经分析过了,而Set的实现依赖于MapHashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,因此我们再来分析Map

本文源码分析基于jdk 1.8.0_121

关系图

Java集合系列06之Map接口概览_第1张图片
Map框架
  • Map是具有映射关系的集合接口,储存内容是键值对
  • AbstractMap是继承于Map的抽象类,实现了Map中大部分方法,类似AbstractList
  • SortedMap 是继承于Map的接口,储存有序的键值对,排序是通过Comparator实现的
  • NavigableMap 是继承于SortedMap的接口,NavigableMap有一系列的导航方法;如"获取大于/等于某对象的键值对"、“获取小于/等于某对象的键值对”等等
  • TreeMap 继承于AbstractMap,并实现了NavigableMap接口,储存有序的键值对
  • HashMap 继承于AbstractMap,存储无序的键值对
  • WeakHashMap 继承于AbstractMap,存储无序的“弱键值对”
  • Hashtable 继承于Dictionary,实现了Map接口,储存无序的键值对,且是线程安全的,支持Enumeration遍历。

Map

Map的定义如下:

public interface Map

其储存了键值对,且不允许包含重复的键,一个键只能对应一个值,Map可以单独查看键集、值集或键-值映射关系。

Map API

void                 clear()
boolean              containsKey(Object key)
boolean              containsValue(Object value)
Set>     entrySet()
boolean              equals(Object o)
V                    get(Object key)
int                  hashCode()
boolean              isEmpty()
Set               keySet()
V                    put(K key, V value)
void                 putAll(Map map)
V                    remove(Object key)
int                  size()
Collection        values()
  • keySet() 方法用于返回键集
  • values() 方法用于返回值集
  • entrySet() 方法用于返回键-值映射关系

Map.Entry

其定义如下:

interface Entry

Map.EntryMap的内部接口,Map.Entry是键值对,Map通过entrySet() 获取Map.Entry的键值对集合。

Map.Entry API

K getKey();
V getValue();
V setValue(V value);
boolean equals(Object o);
int hashCode();

AbstractMap

其定义如下:

public abstract class AbstractMap implements Map 

AbstractMap提供了Map的大部分实现,要实现不可修改的映射,只需扩展此类并提供 entrySet()方法的实现即可。要实现可修改的映射,编程人员必须另外重写此类的 put 方法(否则将抛出 UnsupportedOperationException),entrySet().iterator() 返回的迭代器也必须另外实现其 remove 方法。

AbstractMap API

abstract Set>     entrySet()
         void                 clear()
         boolean              containsKey(Object key)
         boolean              containsValue(Object value)
         boolean              equals(Object o)
         V                    get(Object key)
         int                  hashCode()
         boolean              isEmpty()
         Set               keySet()
         V                    put(K key, V value)
         void                 putAll(Map m)
         V                    remove(Object key)
         int                  size()
         String               toString()
         Collection        values()
         Object               clone()

SortedMap

其定义如下:

public interface SortedMap extends Map 

SortedMap是一个有序的键值映射,排序方式有两种:自然排序和指定Comparator

SortedMap API

Comparator     comparator()
K                         firstKey()
SortedMap           headMap(K endKey)
K                         lastKey()
SortedMap           subMap(K startKey, K endKey)
SortedMap           tailMap(K startKey)
Set                    keySet();
Collection             values();
Set>      entrySet();

NavigableMap

其定义如下:

public interface NavigableMap extends SortedMap

NavigableMap是继承于SortedMap的接口,具有了针对给定搜索目标返回最接近匹配项的导航方法。

NavigableMap API

Entry             ceilingEntry(K key)
Entry             firstEntry()
Entry             floorEntry(K key)
Entry             higherEntry(K key)
Entry             lastEntry()
Entry             lowerEntry(K key)
Entry             pollFirstEntry()
Entry             pollLastEntry()
K                       ceilingKey(K key)
K                       floorKey(K key)
K                       higherKey(K key)
K                       lowerKey(K key)
NavigableSet         descendingKeySet()
NavigableSet         navigableKeySet()
NavigableMap      descendingMap()
NavigableMap      headMap(K toKey, boolean inclusive)
SortedMap         headMap(K toKey)
SortedMap         subMap(K fromKey, K toKey)
NavigableMap      subMap(K fromKey, boolean fromInclusive, boolean toInclusive)
SortedMap         tailMap(K fromKey)
NavigableMap      tailMap(K fromKey, boolean inclusive)
  • lowerEntryfloorEntryceilingEntryhigherEntry 分别返回与小于、小于等于、大于等于、大于给定键的键关联的 Map.Entry 对象,如果不存在这样的键,则返回 null
  • firstEntry、pollFirstEntry、lastEntry 和 pollLastEntry 方法,它们返回和/或移除最小和最大的映射关系(如果存在),否则返回 null。
  • lowerKey、floorKey、ceilingKey 和 higherKey分别返回与小于、小于等于、大于等于、大于给定键的键
  • navigableKeySet、descendingKeySet分别获取正序/反序的键集,descendingMap()返回此映射中所包含映射关系的逆序视图
  • headMap、subMap、tailMap返回特定的键-值对的子集

Dictionary

其定义如下:

public abstract class Dictionary 

NavigableMapJDK 1.0定义的键值对的接口,它也包括了操作键值对的基本函数。

Dictionary API

Enumeration     elements()
V                  get(Object key)
boolean            isEmpty()
Enumeration     keys()
V                  put(K key, V value)
V                  remove(Object key)
int                size()

你可能感兴趣的:(Java集合系列06之Map接口概览)