之前我们系统地学习过List。接下来我们先学习Map,然后学习Set;因为Set的实现类都是基于Map实现的(比如HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。
首先,我们来看看Map架构。
如上图:
在详细介绍各个实现类之前,首先来看看对各个接口和抽象类的总体介绍。 内容包括: 转载请注明出处:http://www.genealogy-computer-tips.com/skywang12345/p/3308931.html 地图定义如下: Map 是一个键值映射接口。 Map不能包含重复的key;每个键最多只能映射到一个值。 描述 : (02)Map提供了“键值对”、“根据key获取值”、“删除key”、“获取容量大小”等方法。
Map.Entry 定义如下: Map.Entry 是Map 中的内部接口。 Map.Entry 是 键值对 。 Map通过entrySet()获取Map.Entry的键值对集合,从而通过这个集合实现键匹配。对值对的操作。 Map.Entry API
AbstractMap 定义如下: AbstractMap 类提供了 Map 接口的骨干实现,以最大限度地减少实现此接口所需的工作。 要实现可修改的映射,程序员必须另外重写该类的 put 方法(否则将抛出 UnsupportedOperationException),并且 EntrySet().iterator() 返回的迭代器必须另外实现其 remove 方法。
AbstractMap API
SortedMap 定义如下: SortedMap 是继承自 Map 接口的接口。它是一个有序的 SortedMap 键值映射。对 此外,所有SortedMap实现类都应该提供4个“标准”构造函数:
SortedMap API
NavigableMap 定义如下: NavigableMap 是继承自 SortedMap 的接口。它是一个可导航的键值对集合,其导航方法可报告给定搜索目标的最接近匹配项。
NavigableMap API 说明: NavigableMap提供的功能可分为4类: 词典定义如下: NavigableMap 是 JDK 1.0 定义的键值对接口。它还包括操作键值对的基本功能。
(01)地图为映射接口。 Map中存储的内容为键值对(key-value)。
(02) AbstractMap是继承自Map的抽象类。它实现了 Map 中的大部分 API 。其他Map实现类可以通过继承AbstractMap来减少重复编码。
(03)SortedMap是继承自Map的接口。 SortedMap中的内容是按排序的键值对。排序的方法是通过比较器(Comparator)。
(04) NavigableMap 是继承自 SortedMap 的接口。与SortedMap相比,NavigableMap拥有一系列的导航方式;比如“获取大于/等于某个对象的键值对”、“获取小于/等于某个对象的键值对”等。
(05)TreeMap继承于AbstractMap,并实现NavigableMap接口;因此,TreeMap 中的内容是“有序键值对”!
(06)HashMap继承于AbstractMap,但没有实现NavigableMap接口;因此,HashMap的内容是“键值对,但不保证顺序”!
(07) Hashtable虽然没有继承于AbstractMap,但它确实继承于Dictionary(Dictionary也是键值对的接口),并且也实现了Map接口;因此,Hashtable 的内容也是“键值对,也不是保证顺序”。但与 HashMap 相比,Hashtable 是线程安全的,并且支持通过 Enumeration 进行遍历。
(08) WeakHashMap继承自AbstractMap,与HashMap的key类型不同,WeakHashMap的key是“弱key”。
1 地图
2 Map.Entry
3 AbstractMap
4 SortedMap
5 NavigableMap
6 Dictionary1 地图
公共接口地图
Map 接口提供了三种集合视图,允许 键集、值集 或 键值映射 以集合的形式查看映射径向关系内容。
地图映射顺序。有些实现类可以显式保证它们的顺序,例如TreeMap;其他映射实现不保证顺序,例如 HashMap 类。
Map 的实现类应提供 2 个“标准”构造函数: 第一个,void(无参数)构造函数,用于创建空地图 ; 第二种,有一个带有单个Map类型参数的构造函数,它创建一个新的map,其键值映射与其参数相同。 事实上,后一个构造函数允许用户复制任何映射,生成所需类的等效映射。尽管无法强制执行此建议(因为接口不能包含构造函数),但 JDK 中的所有常见映射实现都遵守它。
地图API抽象 void clear()
抽象布尔值 containsKey(对象键)
抽象布尔值 containsValue(对象值)
抽象集
(01) Map 提供分别返回键集、值集或键值映射关系集的接口。 E EntrySet()用于返回Set()的Set(),该Set()返回键值集。 (Values() 用户返回
的集合集合
只能最大化为一个值,因此, 键值集和键集为 Set,值集为 Collection。2 地图.条目
接口入口
抽象布尔等于(对象对象)抽象 K getKey()
抽象 V getValue()
抽象 int hashCode()
抽象 V setValue(V 对象)
3 抽象地图
公共抽象类 AbstractMap
要实现不可修改的映射,程序员只需扩展此类并提供 EntrySet 方法的实现,该方法返回映射的集合视图。通常,返回的集合将依次在 AbstractSet 上实现。该集合不支持add()或remove()方法,其迭代器也不支持remove()方法。 抽象集
4 排序地图
公共接口 SortedMap
SortedMap 进行排序有两种方法:自然排序或用户指定的比较器。插入排序的 SortedMap 中的所有元素都必须实现 Comparable 接口(或被指定的比较器接受)。
(01) void(无参数)构造函数,它创建一个空的排序映射,根据键进行排序按照它们的自然顺序。
(02) 构造方法采用 Comparator 类型参数,该方法创建一个空的有序映射,根据指定的比较器进行排序。
(03) 带Map类型参数的构造方法,该方法会创建一个新的有序映射,该映射与参数具有相同的键值映射关系,并按照键的自然顺序排序。
(04) 带有 SortedMap 类型参数的构造方法 ,该方法创建一个新的排序映射,其键值映射和排序方法与输入排序映射相同。无法保证此建议将得到执行,因为接口不能包含构造函数。 //继承自Map的API
抽象无效明确()
抽象布尔值 containsKey(对象键)
抽象布尔值 containsValue(对象值)
抽象集
5 导航地图
公共接口 NavigableMap
NavigableMap 提供了相关方法,分别获取“键”、“键值对”、“键集”、“键值对集”。 抽象条目
第1类,提供操作键值对的方法。 R LOWEERENTRY、Floorentry、CEILINGENTRY 和 Higherentry 方法分别返回小于、小于等于、大于等于和大于给定键的 MAP.ENTRY 对象。
第一个条目、pollFirstEntry、lastEntry 和 pollLastEntry 方法,返回和/或删除最小和最大映射关系(如果存在),否则返回 null。
类别2,提供操作键的方法。这与 LOWERKEY、FloorKey、CeilingKey 和 Higherkey 方法类似。它们分别返回小于、小于等于、大于等于、大于给定键的键。
类别 3, 获取密钥集。
navigableKeySet和descendingKeySet分别获取正序/倒序键集。
类别4,获取键值对的子集。 6词典
公共抽象类Dictionary
字典API抽象枚举
相关推荐
Java宝典系列09 地图架构
Java集合系列08列表总结(
知乎第二季度营收10.44亿元
拉勾招聘联合知乎推出“2024
「跌宕起伏」的2022:告别时
亚马逊云技术re:Inforc
如何在keil中进行中文注释?
s2010打开vs2013_v
stm32模拟鼠标键盘
结束了! CPU一味追求速度出
结束了! CPU一味追求速度出
可怕! CPU居然成了黑客
PS字体设计教程:制作创意个性
PS人像后期特效教程:使用画笔
PS颓废照片制作教程:学习制作
电脑蓝屏0x00000050是
如何让word中每一页只有一行
桌面上IE图标不见了怎么办(w
您是否被四字域名所吸引? dx
快递行业域名“按需提供”!随趣
两字母域名PT.com被曝已激
Word域名太热门了! Ste
Synology NAS 将开
简单介绍vs2013git的使