何时在java中使用linkedhashmap而不是hashmap?

2023-12-28

linkedhashmap和hashmap之间的选择有哪些实际场景?我已经完成了每个工作,得出的结论是 linkedhashmap 维护插入顺序,即元素将以与插入顺序相同的顺序检索,而 hashmap 不会维护顺序。 那么有人可以告诉我们在什么实际场景中选择一种集合框架以及为什么吗?


  1. LinkedHashMap将按照条目放入映射的顺序进行迭代。

  2. null允许的值LinkedHashMap.

  3. 该实现不是同步的并且使用双链接桶。

  4. LinkedHashMap非常类似于HashMap,但它增加了对添加或访问项目的顺序的认识,因此迭代顺序与插入顺序相同,具体取决于构造参数。

  5. LinkedHashMap还为通过覆盖创建 Cache 对象提供了一个很好的起点removeEldestEntry()方法。这使您可以创建一个 Cache 对象,该对象可以使用您定义的某些条件使数据过期。

  6. 基于链表和散列数据结构,具有链表(想想索引 SkipList)功能,以插入树中的方式存储数据。最适合实现 LRU(最近最少使用)。LinkedHashMap延伸HashMap.

它按照插入的顺序维护映射中条目的链接列表。这允许在地图上进行插入顺序迭代。也就是说,当迭代一个集合视图时LinkedHashMap,元素将按照插入的顺序返回。此外,如果将钥匙再次插入LinkedHashMap,保留原来的顺序。这允许在地图上进行插入顺序迭代。也就是说,当迭代一个LinkedHashMap,元素将按照插入的顺序返回。您还可以创建一个LinkedHashMap按上次访问的顺序返回其元素。

LinkedHashMap 构造函数

LinkedHashMap( )

此构造函数构造一个空的插入顺序 LinkedHashMap 实例,具有默认的初始容量 (16) 和负载因子 (0.75)。

LinkedHashMap(int capacity)

此构造函数构造一个具有指定初始容量的空 LinkedHashMap。

 LinkedHashMap(int capacity, float fillRatio)

此构造函数构造一个具有指定初始容量和负载因子的空 LinkedHashMap。

LinkedHashMap(Map m)

此构造函数构造一个插入顺序的 Linked HashMap,其映射与指定的 Map 相同。

LinkedHashMap(int capacity, float fillRatio, boolean Order)

此构造函数构造一个空的 LinkedHashMap 实例,具有指定的初始容量、负载因子和排序模式。

LinkedHashMap支持的重要方法

 Class clear( )

从地图中删除所有映射。

containsValue(object value )>

如果此映射将一个或多个键映射到指定值,则返回 true。

 get(Object key)

返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。

removeEldestEntry(Map.Entry eldest)

下面是如何使用 LinkedHashMap 的示例:

Map<Integer, String> myLinkedHashMapObject = new LinkedHashMap<Integer, String>();  
myLinkedHashMapObject.put(3, "car");  
myLinkedHashMapObject.put(5, "bus");  
myLinkedHashMapObject.put(7, "nano");  
myLinkedHashMapObject.put(9, "innova");  
System.out.println("Modification Before" + myLinkedHashMapObject);  
System.out.println("Vehicle exists: " +myLinkedHashMapObject.containsKey(3));  
System.out.println("vehicle innova Exists: "+myLinkedHashMapObject.containsValue("innova"));  
System.out.println("Total number of vehicles: "+ myLinkedHashMapObject.size());  
System.out.println("Removing vehicle 9: " + myLinkedHashMapObject.remove(9));  
System.out.println("Removing vehicle 25 (does not exist): " + myLinkedHashMapObject.remove(25));  
System.out.println("LinkedHashMap After modification" + myLinkedHashMapObject);  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在java中使用linkedhashmap而不是hashmap? 的相关文章

随机推荐

  • Django - 测试失败时记录

    我有很多单元测试Django https www djangoproject com 如果测试失败 我经常需要查看日志 如果可能的话 在控制台中 我无法真正使用日志文件 因为它变得非常混乱 我现在要做的是 激活控制台日志记录settings
  • 删除字符串末尾的空格但保留换行符

    如何检查Python字符串在任何点是否有新行前有一个空格 如果确实如此 我必须删除该单个空格 但保留新行符号 这可能吗 def remspace my str if len my str lt 2 returns unchanged ret
  • 打开模式时自动聚焦输入不起作用 - React Bootstrap

    我有一个由 3 个组件组成的模态 每个组件代表一个阶段 例如第一个组件正在输入用户的名字 当用户单击 下一步 时 它将转到下一个组件 即输入地址 然后用户单击 下一步 它将带用户到最后阶段 输入昵称 在每一个input来自组件的元素 它将有
  • 如何从内联汇编器调用 Win32 API 函数?

    有人可以告诉我这段代码有什么问题吗 我只是从 kernel32 dll 调用 Sleep 函数 怎么了 我使用的是 Visual Studio 2008 任何帮助将不胜感激 非常感谢 asm mov eax 77e2ef66h push 9
  • 如何附加(或其他方法)大量 HTML 代码?

    我需要附加很多 HTML 代码 为了提高可读性 我不想将所有内容写在一行中 而是将它们拆分为常规 HTML 这大概是 15 个新行之类的 问题是 JavaScript 不允许我这样做 var target post comment this
  • 如何从张量流中的RNN模型中提取细胞状态和隐藏状态?

    我是 TensorFlow 新手 很难理解 RNN 模块 我正在尝试从 LSTM 中提取隐藏 单元状态 对于我的代码 我使用的实现https github com aymericdamien TensorFlow Examples http
  • Python 3:如何将异步函数提交到线程池?

    我想同时使用ThreadPoolExecutor from concurrent futures和异步函数 我的程序重复向线程池提交具有不同输入值的函数 在该较大函数中执行的最终任务序列可以按任何顺序 并且我不关心返回值 只关心它们在将来的
  • 跨平台配置、选项、设置、首选项、默认值

    我对人们关于如何最好地在跨平台应用程序中存储首选项和默认设置的看法感兴趣 我主要在 nix 和 Windows 上使用 Node js 和 Perl 但我也对更大的前景感兴趣 在 nix 世界中 点文件 和目录 非常常见 系统范围或应用程序
  • 尝试安装 eclipse 时 eclipse 更新失败

    当尝试使用 eclipse 新软件功能安装 eclipse 时 出现以下错误 Cannot complete the install because one or more required items could not be found
  • dart中通过反射获取私有变量

    我想在 dart 的对象中获取私有变量 这个变量没有吸气剂 所以我想通过反射来做到这一点 我尝试了很多方法 但对我来说没有任何作用 例如 当我这样做时 var reflection reflect this InstanceMirror f
  • AngularJS 应用程序文件结构

    在一个大型 AngularJS 应用程序中 将所有控制器都放在一个 controllers js 文件中 对我来说似乎有点难以维护 有没有更好的方法来做到这一点 例如 js controllers myController js js co
  • Jquery如何在动态创建的元素上绑定点击事件?

    我尝试了下面的代码 但它不起作用 jQuery 1 9 1 在这里试试这个
  • 如何管理 ANTLR 中的可选空白?

    我正在尝试解析 ANTLR 中的数据文件 它有可选的空格 例如 3 6 97 12 15 18 下图显示了线的起点和终点 末尾有一个换行符 并且没有制表符 3 6 97 12 15 18 我的语法是 lines line line ws1
  • 将可空列更改为具有默认值的 NOT NULL

    我今天遇到一个旧表 其中有一个名为 Created 的日期时间列 它允许空值 现在 我想更改它 使其不为 NULL 并且还包含一个添加默认值 getdate 的约束 到目前为止 我已经得到了以下脚本 只要我事先清除了所有空值 该脚本就可以正
  • 为 git 输入提交消息后该怎么办?

    我输入后git commit a弹出一个文本编辑器 我输入我的评论 输入评论后 我必须按哪些按钮才能使其进入实际提交的下一阶段 我在 Windows 上使用默认设置的 mysysGit 尝试这个 git add file name git
  • 在 iOS 模拟器中截图

    我想在模拟器中运行时截取我的 iOS 应用程序的屏幕截图 并将屏幕截图保存在我的 Mac 上 我怎样才能做到这一点 It s just as simple as command s or File gt Save Screen Shot i
  • 使用 JQuery 的 IE 中的堆栈溢出(第 12/1076 行)

    我正在使用来自 Google CDN 的 JQuery 并且在第 12 行 对于 min 文件 和第 1076 行 对于未压缩的文件 出现堆栈溢出错误 使用 IE8 堆栈溢出错误将我带到的行的 JQuery 代码是 jQuery js ma
  • 如何使用 python 将 firestore 查询响应转换为 json

    我写了下面的代码 places ref db client collection u places doc places ref where u city name u paris get print doc 控制台输出为
  • Google Sheets 最大单元格限制和缓解措施

    我在网上读到 Google 表格的最大单元格限制为 500 万个单元格 我目前正在处理的一张工作表已经远远超出了该限制 包括空白单元格 新的限制是多少 我还手动检查了我使用了多少个单元格 有没有 我可以用来进行检查的函数或脚本 我正在处理的
  • 何时在java中使用linkedhashmap而不是hashmap?

    linkedhashmap和hashmap之间的选择有哪些实际场景 我已经完成了每个工作 得出的结论是 linkedhashmap 维护插入顺序 即元素将以与插入顺序相同的顺序检索 而 hashmap 不会维护顺序 那么有人可以告诉我们在什