问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java知识之详解Map架构

发布网友 发布时间:2024-09-07 09:09

我来回答

1个回答

热心网友 时间:2024-11-30 18:50

Map的相关知识将分为几个部分进行说明。

首先,我们关注Map的架构。

(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,并实现了Map接口;因此,Hashtable的内容也是键值对,也不保证次序。与HashMap相比,Hashtable是线程安全的,并且支持通过Enumeration遍历。

(08) WeakHashMap继承自AbstractMap。它与HashMap的键类型不同,WeakHashMap的键是“弱键”。

Map提供了三种Collection视图,允许以键集、值集和键-值映射关系集的形式查看某个映射内容。

Map的映射顺序,有些实现类保证了顺序,如TreeMap,有些实现类则没有保证顺序,如HashMap。

Map的实现类应该提供两种构造器,一种是无参构造器,用于创建空映射,另一种是带一个Map参数的构造器,用于创建与该map等大小的映射。

Map提供接口分别用于返回键集、值集或键-值映射关系集。entrySet()用于返回键-值集的Set集合,keySet()用于返回键集的Set集合,values()用于返回值集的Collection集合。因为Map中不能包含重复的键,每个键最多只能映射到一个值。所以,键-值集、键集都是Set,值集是Collection。

Map提供了“键-值对”、“根据键获取值”、“删除键”、“获取容量大小”等方法。

AbstractMap是一个实现了Map接口的抽象类,不能被实例化,只能作为其他实现类的父类。

AbstractMap实现了Map接口中的大部分方法。

要实现不可修改的映射,开发人员只需扩展此类并提供entrySet方法的实现即可,该方法将返回映射关系set视图,通常,返回的set将依次在AbstractSet上实现。此set不支持add()或remove()方法,其迭代器也不支持remove()方法。

要实现可修改的映射,开发人员必须另外重写此类的put方法(否则将抛出UnsupportedOperationException),entrySet().iterator()返回的迭代器也必须另外实现其remove方法。

SortedMap是一个继承自Map接口的接口。它是一个有序的SortedMap键值映射。SortedMap的排序方式有两种:自然排序或用户指定比较器。插入有序SortedMap的所有元素都必须实现Comparable接口(或者被指定的比较器所接受)。

所有SortedMap实现类都应该提供4个“标准”构造方法:无参数构造方法,创建一个空的有序映射,按照键的自然顺序进行排序。带有一个Comparator类型参数的构造方法,创建一个空的有序映射,根据指定的比较器进行排序。带有一个Map类型参数的构造方法,创建一个新的有序映射,其键-值映射关系与参数相同,按照键的自然顺序进行排序。带有一个SortedMap类型参数的构造方法,创建一个新的有序映射,其键-值映射关系和排序方法与输入的有序映射相同。无法保证强制实施此建议,因为接口不能包含构造方法。

NavigableMap是一个继承自SortedMap的接口。它是一个可导航的键-值对集合。具有为给定搜索目标报告最接近匹配项的导航方法。

NavigableMap分别提供了获取“键”、“键-值对”、“键集”、“键-值对集”的相关方法。

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类,获取键-值对的子集。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
化学速率的理解问题 标准平衡常数Kθ公式「科普」 沼泽过滤用沙子还是石子 艾利和U10VP(1GB)主要功能 艾利和U10VP(512MB)重要参数 艾利和U10(1GB)重要参数 艾利和U10(1GB)艾利和U10(1GB)详细参数 艾利和U10(512MB)艾利和U10(512MB)详细参数 电信手机查详单能不能把上网的历史记录查出来 电信流量超支怎么查询 java中的map用法(javamap的用法) 新固态硬盘装win10系统的详细步骤 Java之五种遍历Map集合的方式 人工降雨炮弹的原理 沈阳铁路公安处线路民警工资问题 ...问题一辆瑞风冷没怠速不加油熄火热车怠速正常怠速马达更换了也?_百 ... 人工降雨发射的是什么炮弹 人工降雨发射的是哪种炮弹 我家玉米地草有点多。 但不小心喷错了草甘膦。 6亩地喷了100克左右,会... 马艳萍自行车运动员 凉车没有怠速,加不上油,加油突突有回声,热车就没问题了? 中国自行车运动员 大提琴教程初级程度(下)基本信息 中国人民解放军陆军工程大学石家庄校区位于哪里 大提琴教程初级程度(上)内容简介 银行笔试需要带什么 大提琴教程初级程度(下)曲目 教成人钢琴和大提琴? 银行存款上用铅笔写了几个字要紧吗 日企业为什么上班不能带自动铅笔? 南昌有几个长途客运站啊? 有没有到广东省汽车站的呢?就广州火车站旁边的... 茄子有什么功效与作用? 肌肉乳酸堆积过多怎么办 如何看待陕西西安蓝田女护士上夜班途中被同一小区王某杀害 茄子的营养价值及功效 茄子不能跟什么一起搭配 高位盘整是什么意思? 运动乳酸怎么快速消除 楼市高位盘整是什么意思 神农架的一些奇闻异事有哪些? 基金学哪个专业 如何加快肌肉乳酸代谢 基金理财算什么专业 股票K线高位盘整是什么意思 谁知道有关中国神农架的怪事 ...蓝田县人,我爱人得了直肠类癌,现在陕西省人民医院就诊问是否在农合报... 股票高位缩量盘整是什么意思 当基金经理选什么专业 第三方公司说提取上海住房公积金可以当天当账拿钱?他们是如何操作的... ...拿公积金还钱 还说帮我找好人了 叫我去提取公积金 京东购物是不是有人专门送货上门的? 870手机性价比排行榜1500元骁龙870手机排行