jdk21新发布的一种插入有序的Map集合好用之处

我们都知道map是一个无序不可重复key的,为什么是无序的,可以自己查看源码去理解,本质原因在于key的hash值,所以现在java21新出了一种可以得到插入有序的map

比如我们之间使用map的时候,比如下面这样:

Map map = new HashMap() ;
map.put("a","b");
map.put("a","c");
map.put("a","d");

然后此时如果我们想获取和数组一样第index下的entry,我们此时用map是解决不了的,那么现在我们用上jdk21的时候,我们可以使用一个新的Map,叫做SequencedMap接口。我们来看一下。jdk21下载的链接,在下面,大家自行下载安装后,可以直接在idea中切换就行,不用该环境变量,因为考虑到原本用的是java8。

jdk官方下载地址

大家自行根据自己的需求下载对应的。

jdk21新发布的一种插入有序的Map集合好用之处_第1张图片

那么在idea中如何做到不修改环境变量去切换jdk的版本呢?

接下来我就给大家整理一下步骤:

①点击左上角的File 文件,找到Project Structure 项目结构

jdk21新发布的一种插入有序的Map集合好用之处_第2张图片

②点击进去之后,找到左侧的Platform Settings 平台设置,看到右边的上方有一个“+”号

jdk21新发布的一种插入有序的Map集合好用之处_第3张图片

③点击“+”号之后呢,找到Add JDK... 添加jdk

jdk21新发布的一种插入有序的Map集合好用之处_第4张图片

然后在自己的安装目录中找到jdk的安装包,然后点击OK

jdk21新发布的一种插入有序的Map集合好用之处_第5张图片

④然后按照下面图片这个步骤:

jdk21新发布的一种插入有序的Map集合好用之处_第6张图片

然后点击右下角的Apply,再点击OK。一定要先Apply应用之后,再点击OK。

⑤接下来继续,找到File文件的Settings 设置

jdk21新发布的一种插入有序的Map集合好用之处_第7张图片

然后按照层级找到下面这些:

jdk21新发布的一种插入有序的Map集合好用之处_第8张图片

⑥最后就是把下面这两处的都改成21,有可能下拉列表中没有21,那么我们可以自己手打输入21也是可以的。jdk21新发布的一种插入有序的Map集合好用之处_第9张图片

然后点击Apply应用,再点击OK。就可以了。

现在我们通过double Shift 或者Crtl + Shift + n搜索SequencedMap接口。

jdk21新发布的一种插入有序的Map集合好用之处_第10张图片

发现它继承了Map接口,我们看看它的实现类有哪些?

jdk21新发布的一种插入有序的Map集合好用之处_第11张图片

那么我们就用LinkedHashMap做一个例子,那么我们可以在脑海中想LinkedHashMap的结构是长啥样的。

我可画个图给大家参考帮助理解。

jdk21新发布的一种插入有序的Map集合好用之处_第12张图片

大概是长这个结构,反正就是一个双向链表。

我现在模拟一个场景就是,我现在要对订单删除的时候,做一些记录,把这些删除的订单记录到系统操作日志里面去,然后我要获取第一条删除的订单记录数据。

这里我会导入一个fastJson的jar包,然后使用JSONObject做一下数据的模拟。

那么如何在一个普通的java项目里面导入jar包呢,我们还是按照以下这个步骤:

左上角->File->Project Structure,然后再按照下面这个顺序去操作就可以了。

jdk21新发布的一种插入有序的Map集合好用之处_第13张图片

我可以把fastJson.jar包放出来。

我把jar包放到了gitee上面了,大家可以直接克隆。

Kyrie Zhou/jar包共享池

代码如下:

jdk21新发布的一种插入有序的Map集合好用之处_第14张图片

最后我们获取第一条订单的删除记录数据就是调用firstEntry()方法获得第一个Entry对象,然后再代通过Entry找到value,我们运行代码,看看运行结果:

jdk21新发布的一种插入有序的Map集合好用之处_第15张图片

我们把json字符串做一下解析,看得更舒服一些:

jdk21新发布的一种插入有序的Map集合好用之处_第16张图片

总结:

jdk21中的SequencedMap是一个插入顺序有序的有序集合,可以像Lsit那样获取某个index下标下的元素。

最后:

如果大家觉得这票文章对你们有所帮助的话,麻烦给个免费的赞赞,也祝各位码农在IT道路上越走越远,高歌猛进,谢谢!

你可能感兴趣的:(java,服务器)