Map构架详解
欢迎 start
map构架图
map结构简介
Map接口
:以键值对
储存内容的映射接口.SortedMap接口
:继承Map接口,所以其也是以键值对
储存信息的.另外,通过其内部的comparator()
方法来对map的键值对进行排序.NavigableMap接口
:继承自SortedMap接口,其有一系列的导航方法.如:获取大于/等于某对象的键值对
···等方法AbstractMap抽象类
:实现了Map接口的大部分方法.避免重复编码.TreeMap类
:继承AbtractMap类并实现NavigableMap接口中的方法.所以其是有序的键值对
.HashMap类
:继承自AbstractMap类,是无序的键值对
.WeakHashMap类
:同样是无序的键值对
,但是其键是弱键
.HashTable类
:继承自Directionary类,并自己实现Map接口的类,其特点是:无序的键值对,并且线程安全
.
下面简单介绍一下上图中的各个接口内容
Map接口
签名如下:
public interface Map<K,V> {}
Map接口的特点:
Map中的键值对不能包含重复的键,每个键只能对应一个值.并且Map中的键可为null,且最多一个.值可重复,并且可以为null.
Map<String,String> sMap = new HashMap<>(); sMap.put(null, "ss"); sMap.put("key2", null); sMap.put(null, "ss2"); System.out.println(sMap.keySet()+":"+sMap.values());
控制台输出:[null, key2]:[ss2, null]
Map中提供了以
键值集
键集
值集
来查看map内容.entrySet()
方法返回键值集对象.- 也提供了许多其他访问,修改的方法。后续会详解.
Map.Entry接口
- Map.Entry接口是Map接口的内部接口.
- Map通过
entrySet()
获取Map.Entry的键值对集合
,从而通过该集合实现对键值对的操作。
AbstractMap抽象类
类签名 :
public abstract class AbstractMap<K,V> implements Map<K,V> {}
- AbstractMap抽象类主要是实现Map接口中的方法.详细方法请看
HashMap
中的详解
SortedMap接口
SortedMap的排序
:自然排序
或者用户指定比较器
。 插入有序 SortedMap 的所有元素都必须实现 Comparable 接口(或者被指定的比较器所接受)。SortedMap
实现类必须提供四种(01) void(无参数)构造方法,它创建一个空的有序映射,按照键的自然顺序进行排序。 (02) 带有一个 Comparator 类型参数的构造方法,它创建一个空的有序映射,根据指定的比较器进行排序。 (03) 带有一个 Map 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系与参数相同,按照键的自然顺序进行排序。 (04) 带有一个 SortedMap 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系和排序方法与输入的有序映射相同。无法保证强制实施此建议,因为接口不能包含构造方法。
NavigableMap接口
接口签名
: public interface NavigableMap
Dictionary抽象类
类签名:
public abstract class Dictionary<K,V> {}
其也是 键值对 的类,类似于AbstractMap,也提供了常用的一些方法.