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

本文介绍了Java21中新增的SequencedMap,它提供了插入顺序保证,不同于传统HashMap。作者演示了如何在项目中使用SequencedMap并导入fastJson库进行数据操作,展示了获取指定索引元素的能力。
摘要由CSDN通过智能技术生成

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

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

Map<Object,Object> 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官方下载地址

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

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

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

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

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

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

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

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

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

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

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

⑥最后就是把下面这两处的都改成21,有可能下拉列表中没有21,那么我们可以自己手打输入21也是可以的。

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

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

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

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

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

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

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

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

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

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

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

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

Kyrie Zhou/jar包共享池

代码如下:

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

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

总结:

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

最后:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值