当前位置: 首页 > news >正文

Java中关于HashMap的元素遍历的顺序问题

文章目录

  • 一、前言
  • 二、原理解释

一、前言

在项目中遍历HashMap集合时,发现遍历entrySet()的顺序与map集合中的顺序不一致,特写此篇文章记录一下。

HashMap在存储时的顺序是无序的这个我是知道的,但是本来以为存储之后,遍历的时候是按照HashMap集合中的顺序遍历的,结果发现遍历的时候与集合中的顺序也不一致。

Map<String,String> map = new HashMap<>();
// map.put()  .........for(Map.Entry<String,String> item:map.entrySet()){System.out.println(item.getKey()+"  "+item.getValue());
}

如上图:map.entrySet()遍历后的顺序有可能会乱序,与HashMap存储的顺序不一致。

二、原理解释

在Java中,Map 接口的实现(如 HashMap,LinkedHashMap,TreeMap 等)并不保证遍历 keySet() 或 entrySet() 时的顺序。但是,某些特定的 Map 实现确实提供了特定的遍历顺序。

  • 1、HashMap:它基于哈希表实现,并不保证映射的顺序,特别是遍历顺序。因此,当你使用 map.keySet() 遍历 HashMap 时,结果可能会看起来像是“倒序”或“随机”的,但这并不是真正的倒序或随机,而是基于哈希表和内部数组结构的结果。
  • 2、LinkedHashMap:它维护了一个运行于所有条目的双向链表。此链表定义了迭代顺序,通常是按照条目插入到映射中的顺序(插入顺序)。注意,如果此映射由于重新插入(重新插入键/值对)而导致结构修改,则迭代顺序可能会受到影响。
  • 3、TreeMap:它基于红黑树实现,可以保证按照键的自然顺序或创建 TreeMap 时提供的 Comparator 进行排序。
    如果你发现你的 Map 遍历结果看起来像是“倒序”的,并且你没有使用 LinkedHashMap 或 TreeMap,那么这可能是由于你使用的 Map 实现(很可能是 HashMap)的内部结构导致的。
http://www.dtcms.com/a/479507.html

相关文章:

  • 南通江苏网站建设建设淘宝网站的市场分析
  • 网站备案容易通过吗深入挖掘wordpress
  • 网站程序基础wordpress安装无法连接数据库
  • 淘宝天猫优惠卷网站建设网站建设 好发信息网
  • 柔性制造的终极答案:富唯智能机器人如何以“全能感官”实现一机多能
  • Zabbix 配置钉钉告警
  • 网站建设最快多长时间苏州做网站公司精选苏州聚尚网络
  • Docker 镜像版本Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie
  • 网上网站代码可以下载吗转移网站如何转数据库
  • 企业网站示例网站建设方案撰写
  • 数据结构:哈希基础、6种哈希函数构造方法、4种解决哈希冲突的方法和哈希扩展(一致性哈希+虚拟节点+布隆过滤器)
  • 网站做哪种推广好建设银行租房网站湖北
  • 网站建设公司基本流程无锡专业做网站
  • 工商注册网站官网网站和app可以做充值余额功能
  • 东莞网站开发后缀微营销论文
  • 【AI论文】Paper2Video:从科学论文自动生成视频
  • Pod的进阶
  • 汽车4s店网站建设方案自己设计建房子的软件
  • 玉器哪家网站做的好中小企业信息网官网
  • Node.js zlib模块所有 API 详解 + 常用 API + 使用场景
  • wordpress怎么加入站长统计聊城网站建设策划建设公司
  • 优化网站的软件wordpress文章全部展示
  • 大型网站建设行情吉林长春建设工程信息网站
  • 在线网站做品牌网站怎么样
  • 从零开始认识大模型:它的过去、现在与未来以及核心原理
  • 中国风配色网站南京网站开发价格
  • 建设厅官方网站职称动漫制作专业什么电脑最适合
  • [笔记] 驱动开发:usbview编译过程
  • 泉州正规制作网站公司my8777网域名查询
  • hive join优化和数据倾斜处理