LinkedHashMap和HashMap的区别与联系

22. LinkedHashMap和HashMap有什么区别?为什么LinkedHashMap能保持元素的插入顺序? 使用哈希表来存储数据。每个元素的位置由其键的哈希码决定,元素存储在桶(bucket)数组中,多个元素可能映射到同一个桶(哈希碰撞)时,会形成链表或红黑树。这条双向链表按插入顺序或访问顺序链接所有的键值对,确保元素的顺序性。在内部维护了一个双向链表,该链表链接着所有的键值对,从而记录了元素的插入顺序或访问顺序。: 保持插入顺序或访问顺序,内存开销较大,适合需要顺序性和快速查找的场景。保持元素的插入顺序,或者按照访问顺序(如果设置为访问顺序模式)排列。当新的元素被插入时,它会被添加到链表的尾部,保持插入顺序。 阅读详情

由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。

?
import  java.util.HashMap;
import  java.util.Iterator;
import  java.util.LinkedHashMap;
import  java.util.Map;
public  class  TestLinkedHashMap {
 
   public  static  void  main(String args[])
   {
    System.out.println( "*************************LinkedHashMap*************" );
    Map<Integer,String> map = new  LinkedHashMap<Integer,String>();
    map.put( 6 , "apple" );
    map.put( 3 , "banana" );
    map.put( 2 , "pear" );
   
    for  (Iterator it =  map.keySet().iterator();it.hasNext();)
    {
     Object key = it.next();
     System.out.println( key+ "=" + map.get(key));
    }
   
    System.out.println( "*************************HashMap*************" );
    Map<Integer,String> map1 = new   HashMap<Integer,String>();
    map1.put( 6 , "apple" );
    map1.put( 3 , "banana" );
    map1.put( 2 , "pear" );
   
    for  (Iterator it =  map1.keySet().iterator();it.hasNext();)
    {
     Object key = it.next();
     System.out.println( key+ "=" + map1.get(key));
    }
   }
}

 

运行结果如下:

*************************LinkedHashMap*************
6=apple
3=banana
2=pear
*************************HashMap**************************
2=pear
6=apple
3=banana

分析:LinkedHashmap 的特点是put进去的对象位置未发生变化,而HashMap会发生变化.

再普及下:

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列.

HashMap、LinkedHashMap、TreeMap的区别 Map主要用于存储键值对,根据键得到值,因此不允许键重复,但允许值重复。 一. HashMap HashMap比较常用,它根据键的值HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得的数据的顺序完全是随机的。 HashMap最多只允许一条记录的键为null;允许多条记录的值为null。 HashMap不支持... 阅读详情

相关推荐

Java使用LinkedHashMap进行分数排序

主要介绍了Java使用LinkedHashMap进行分数排序的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

LinkedHashMap和HashMap的比较使用

由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。 import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class TestL

643

边缘智能新篇章:RK3588上YOLOv8姿态估计的轻量化部署与性能优化实战

本文详细介绍了在RK3588平台上部署和优化YOLOv8姿态估计模型的完整流程。通过模型转换、ONNX中间表示和性能优化策略,实现在边缘设备上的高效实时推理,为嵌入式AI应用提供可行的轻量化解决方案。

ik6789012的博客 151

HashMap、TreeMap和LinkedHashMap分别在什么时候用

HashMap、TreeMap和LinkedHashMap分别在什么时候用。

hallowty的博客 1348

H无穷控制学习笔记——加权灵敏度H无穷控制问题

一、加权灵敏度H无穷问题 系统结构如上图所示。被控对象P的状态空间方程为(Ap,Bp,Cp,DpA_p,B_p,C_p,D_pAp​,Bp​,Cp​,Dp​),加权函数W1的状态空间方程为(A1,B1,C1,D1A_1,B_1,C_1,D_1A1​,B1​,C1​,D1​),加权函数W2的状态空间方程为(A2,B2,C2,D2A_2,B_2,C_2,D_2A2​,B2​,C2​,D2​),加权函数W3的状态空间方程为(A3,B3,C3,D3A_3,B_3,C_3,D_3A3​,B3​,C3​,D3​)。

一饮丶一啄的博客 4349

Apollo MPC横纵向耦合控制学习笔记

Apollo MPC横纵向控制原理学习笔记

weixin_39199083的博客 1万+

LinkedHashMap和hashMap

LinkedHashMap和hashMap 阅读目录LinkedHashMap和hashMap区别LinkedHashMap应用场景插入顺序和访问顺序 区别 ​ 区别: LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。 HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。 LinkedHashMap存取数据,还是跟

APTX_869的博客 928

初识YUV,实战NV21格式数据转换为Bitmap

初识YUV,并使用YUV数据生成Bitmap图像一、初识YUV二、采样方式2.1、YUV 4:4:42.2、YUV 4:2:22.2、YUV 4:2:2 一、初识YUV 说到YUV我们就必须先从RGB说起了,如下图所示,请各位把每个色块当成一个像素点。通常一个像素点由RGB(Alpha我们先不考虑)三原色组成。 如下图中第一个像素点,其RGB值分别为(236,102,93),而这三个值就组成了我们看到的 红色 。 然而上图中除了RGB值外,我还标出了每个像素点的YUV的值,YUV的值是怎么来的呢?直接给公

乐翁龙 7125

有序Map集合:LinkedHashMap和TreeMap该如何选用

为什么HashMap是无序的?有序的Map集合有哪些?LinkedHashMap和TreeMap都是有序的Map集合,他们有什么区别,该如何选用?LinkedHashMap和TreeMap的底层原理是什么?要搞清楚HashMap为什么是无序的,首先我们要搞清楚HashMap的底层数据结构。很多人可能会说简单,HashMap的底层不就是结构,那什么是链表散列结构呢? 用更直白的话说就是。HashMap中存放的元素是根据key和hash(key)存放在数组、链表和红黑树中,而。 可能有人会说,无论是数组、链表和

弹指天下 6994

n8n AI高效工作流自动化 部署使用教程

摘要: n8n是一款开源可视化工作流自动化工具,结合AI能力可高效解决重复性任务。文章详细介绍了从Docker部署到实战应用的完整流程:1)通过Docker Compose自托管n8n,确保数据可控;2)以AI客服日报机器人为例,演示如何串联工单系统、ChatGPT和邮件通知,实现定时自动化;3)进阶搭建交互式AI助手,利用ToolsAgent节点调用业务API;4)整合向量数据库构建RAG知识库问答。关键建议包括:拆分复杂工作流、严格管理凭据、区分开发与生产环境,并建议从高频刚性需求(如日报生成)切入,逐

专注AI大模型,软件混淆,授权 266

使用podspec创建iOS插件

概述 在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。 目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...

xiangzhihong8的专栏 991

HashMap、LinkedHashMap与TreeMap的核心特性与使用场景总结

本文基于实际开发中遇到的“Map按Key排序”问题,结合源码特性,总结三种常见Map的区别与最佳实践。

Harswlgb的博客 1175

FPGA控制AD5754实现模数转换Verilog代码与测试激励

本文提供了使用FPGA控制AD5754芯片实现数字信号转模拟信号的Verilog代码和测试激励。AD5754芯片简介:AD5754是一款16位数字信号转模拟信号的芯片。通信方式:FPGA与AD5754之间通过SPI接口进行通信,SPI时钟clk的最大频率为30MHz。模拟输出:AD5754提供了四路模拟输出。工作方式:当前AD5754采用单极性工作方式。指令刷新:根据现有理解,同轴的速度和电流指令应同时刷新。利用LDAC引脚控制模拟信号的刷新,但需实际验证。CLR信号验证。

whm128的博客 246

LinkedHashMap和HashMap的区别

HashMap HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null,其中HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null...

weixin_44796253的博客 1万+

【ITS模型】基于MATLAB的ITS宽带短波信道模型的建模和仿真

1.软件版本 MATLAB2010b 2.本算法理论知识 对短波信道建模具有里程碑意义的是沃特森在1970年发表的一篇文章,文章中提出了一种静态模型,并在大气中进行了实验验证。 此静态模型可以描述为高斯散射增益抽头延迟线模型,即Watterson模型。 Watterson信道模型是经典的窄带短波信道模型,在这个模型中,信道衰落是瑞利幅度分布,而在每种传播模式中多普勒扩展的功率谱满足高斯分布。Watterson模型没有定义延时扩展的形状,认为各个多径传输模式中不存在延时扩展。其...

FPGA/MATLAB学习教程/源码/项目合作开发 2757

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HashMap、LinkedHashMap、TreeMap三者的区别

HashMap、LinkedHashMap 和 TreeMap 都是 Java 集合中用于存储键值对的 Map 接口的实现类,本文重点介绍它们在底层数据结构、元素顺序、性能以及使用场景等方面存在的区别。

weixin_46425661的博客 2009

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HashMap和LinkedHashMap的区别

无序其实是HashMap按照桶下标输出,有序是LinkedListHashMap按照链表输出。

brycegao321的博客 5730

LinkedHashMap和hashMap的区别

LinkedHashMap和hashMap的区别

职场菜白 1万+

HashMap 和 LinkedHashMap 的使用区别——找出你的最佳选择!

HashMap是一种基于哈希表的实现,它允许将键和值存储为一对一的映射。HashMap快速访问:由于使用哈希算法,HashMap在平均情况下具有常数时间复杂度的查找、插入和删除操作(O(1))。无序性HashMap不保证顺序。即使你以某种顺序插入元素,在迭代时也可能会得到不同的顺序。允许 null 值HashMap允许一个空键和多个空值。是HashMap的一个子类,结合了哈希表的高效性和链表的顺序特性。有序性维护了一个双向链表,按照插入的顺序排列元素。当你迭代。

龚小帅的博客 1483

关于HashMap与LinkedHashMap的区别

关于HashMap与LinkedHashMap的区别 1、HashMap<String,String> hashmap = new HashMap<>(); 当在Map类的集合中使用HashMap时,输入的内容顺序是变化的,每一次运行都是不一样的。 2、LinkedHashMap<String,String> linkedhashmap = new Linke...

weixin_44508081的博客 369

深入理解HashMap和LinkedHashMap的区别

文章目录简介LinkedHashMap详解插入访问removeEldestEntry总结 深入理解HashMap和LinkedHashMap的区别 简介 我们知道HashMap的变量顺序是不可预测的,这意味着便利的输出顺序并不一定和HashMap的插入顺序是一致的。这个特性通常会对我们的工作造成一定的困扰。为了实现这个功能,我们可以使用LinkedHashMap。 LinkedHashMap详解 ...

程序那些事 1万+

TreeMap、HashMap、LinkedHashMap的区别

TreeMap、HashMap、LindedHashMap的区别:

weixin_42631192的博客 454

HashMap,LinkedHashMap,TreeMap的区别

<br /> <br />Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。<br />Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的

FG2006的专栏 6万+
上一篇: Unable to get view server version from device emulator-5554 解决办法
下一篇: Android Activity和Intent机制
hxwhou
博客等级 码龄16年 100粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值