何时在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? 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 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 不会维护顺序 那么有人可以告诉我们在什