java集合之LinkedHashMap

这篇具有很好参考价值的文章主要介绍了java集合之LinkedHashMap。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

之前的文章,我们对HashMap进行了讲解。在之前的文章,我们了解到,HashMap是唯一且无序的。然而LinkedHashMap是有序的,并且也是唯一的。那这个是怎么实现有序的呢,接下来我们将慢慢讲述。

常用方法

linkedHashMap的常用方法和hashmap的常用方法基本一致。都是put添加元素,remove移除元素,get得到某个key对应的value值。这里对linkedHashMap的唯一性,不再进行验证,之前在Hashmap章节验证过hashmap的唯一性了,linkedHashMap一样的,所以不在这里进行验证。
linkedhashmap遍历,java基础,java,链表,数据结构

linkedHashMap 遍历

遍历有很多种,这里我们依然只用一种展示和介绍,如下图。

Collection res = linkedHashMap.values();
      Iterator i = res.iterator();
      while (i.hasNext()) {
         System.out.println(i.next());
      }

这种是通过迭代器来进行遍历集合的。这种方式遍历的是value值。

linkedHashMap 底层分析

linkedhashmap遍历,java基础,java,链表,数据结构
linkedHashMap其实是继承自hashmap,所以hashmap应有的特点的,linkedHashMap也会有。然后我们看linkedHashMap的属性。
linkedhashmap遍历,java基础,java,链表,数据结构
在这里我们看出,他有一个是Entry类型的head变量,他有什么用呢,看起来应该是链表的头结点,具体是不是呢,我们等会接着往下看。我们再看下linkedHashMap的构造方法。
linkedhashmap遍历,java基础,java,链表,数据结构

我们看到,他是直接调用的hashmap的构造方法,除此外就是给accessOrder属性赋值了,这个属性应该是排序有关的,具体,我们接着往下看,看他的put方法。
linkedhashmap遍历,java基础,java,链表,数据结构
没错,在这里我们可以看出,直接调用的是父类HashMap的put方法进行的元素添加,那他是怎么实现的有序的呢,看下图
linkedhashmap遍历,java基础,java,链表,数据结构
他重写了newNode的方法,在这里他把每一个添加的元素,用一个链表串起来了,
linkedhashmap遍历,java基础,java,链表,数据结构
这里我们可以看出,之前类属性head确实是头结点,而类属性tail是当前节点。最后我们看下类属性accessOrder的作用,如下图
linkedhashmap遍历,java基础,java,链表,数据结构
这个是什么意思的就是把元素是按照插入时的顺序排序还是按照你访问的顺序排序。插入时的排序很好理解,访问时的顺序排序是怎么回事呢,就是默认按照插入时的顺序排序的,然后你查询了某一个元素,就把这个元素移到链表的前面。

总结

LinkedHashMap就是在HashMap的基础之前添加了一个链表,可以使集合有序,除此之外,其他特点均和hashmap相同。文章来源地址https://www.toymoban.com/news/detail-584867.html

到了这里,关于java集合之LinkedHashMap的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js递归遍历树形结构数据,获取所有数组id集合

    实现思路 可以使用递归遍历整个树形数组,将每个节点的id加入到一个数组中,最后返回这个数组即可。 数据准备 代码实现 方式一 获取结果 方式二 获取结果 方式三 获取结果 方法总结 这里的tree是树形数组,result是用来保存所有id的数组。 首先遍历当前层级的每个节点,

    2024年02月11日
    浏览(51)
  • 数据结构:二叉树:第3关:基于二叉链表的二叉树的遍历

    任务描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。 编程要求 输入 多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个

    2024年02月03日
    浏览(39)
  • 【 java 集合】使用迭代器 Iterator 遍历集合

    💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜 📝 个人主页:馆主阿牛🔥 🎉 支持我:点赞👍+收藏⭐️+留言📝 📣 系列专栏:java 小白到高手的蜕变🍁 💬格言:要成为光,因为有怕黑的人!🔥 上两篇文章总结了集合体系以及Collection常用方法,本节我们来

    2024年02月07日
    浏览(52)
  • java遍历集合的方法

      java中,集合的遍历是一项基本且重要的技能。我们不仅要知道集合中元素的个数,还要知道元素的值,以及它们之间的关系。 在 Java中,如果需要遍历集合中的某个元素,可以使用以下方法: 1.通过 return语句将集合中元素都遍历一遍,最后得到一个新的集合。 1.先创建一

    2024年02月02日
    浏览(76)
  • Java遍历集合元素并修改

    结论:fori循环可以修改、删除、添加,但是要注意的是下标还是元素;增强for循环内,可以修改,不可以删除、添加。想要删除、添加,使用集合迭代器的删除、添加方法。 对List和Set的遍历,有四种方式,下面以ArrayList为例进行说明。 1.1 fori循环 使用普通for循环的遍历方式

    2024年02月06日
    浏览(36)
  • 【Java】List集合遍历的五种方法

    🎊专栏【Java】 🌺每日一句:人生最重要的就是要清醒的认知 ⭐欢迎并且感谢大家指出我的问题 目录 1.通过for循环配合List接口中的size()和get(index i)的方法 2.使用Iterator迭代器及其方法遍历集合 🍔迭代器 🍔具体操作 3.增强for循环遍历 🍔是for循环的一种 🍔格式 🍔好处 🍔弊

    2024年02月03日
    浏览(53)
  • 【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月06日
    浏览(54)
  • 手撕Java集合——链表

    链表是一种 物理存储结构上非连续存储 结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 特点: 上图每个数据块是一个结点,这些结点一般是从堆上申请来的。 链式结构在逻辑上是连续的,但物理上不一定连续。 链表结构由【单向/双向;循环/非循环;带

    2024年02月13日
    浏览(40)
  • 四、数据结构——单向链表的基本操作详解:创建、插入(头插法、尾插法、任意点插法)、删除(头删法、尾删法、任意位置删法)、查询(按值查下标、按下标查值)、遍历链表和清空链表

    ————后面附有全部代码———— 数据结构在计算机科学中扮演着重要角色,它用于组织和管理数据,提高数据的操作和访问效率。单向链表是一种简单但非常重要的数据结构。本文将深入探讨单向链表的定义、特点、基本操作。 单向链表是一种线性数据结构,由一系列

    2024年01月17日
    浏览(52)
  • Java如何遍历Map对象集合(多种方式)6种方式

    今天比昨天,更优秀 Map简介 Map是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何应用类型的数据。 Map典型的实现类是HashMap、Hashtable(HashMap子类还有LinkedHashMap)、SortedMap子接口及实现类TreeMap、WeakHashMap、IndentityHashMap等 Map遍历第一种 注意:如果

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包