Java 中HashMap集合的一些特点

【常见Java开发面试题】HashMap的工作原理,包括常用的集合类及其特点,Java中的异常处理机制 答案:抽象类:抽象类是不能被实例化的类,它可以包含抽象方法(没有方法体的方法)和非抽象方法。抽象类通常用于定义一组相关类的通用行为和属性,子类必须实现抽象类中的所有抽象方法。抽象类可以有构造方法,子类在实例化时会调用父类的构造方法。接口:接口是一种完全抽象的类型,它只包含抽象方法和常量(默认是public static final)。接口用于定义一组相关类的行为规范,实现接口的类必须实现接口中的所有方法。接口不能有构造方法,也不能包含实例变量。 阅读详情

HashMap的结构是数组(table对应着Hash值)、链表(链表节点为Node)、红黑树结构

  Map中的数据是以Node为单位存储数据的,一个Node包含Key、Value、Hash值。其中Hash值决定了此Node挂在table数组上的哪个索引。上图为三个HashMap$Node对象。

  为了便利程序员,除基本的table-Node的架构外还会额外建立一个EntrySet的Set类型集合,该集合中元素的类型为Entry。而Entry表面是Entry类型实际上还是HashMap$Node类型,是因为HashMap$Node实现了Entry接口,即把保存了实际数据的Node包装成Entry,此时Entry也就有了相应的Key和Value,不过只是指向真实值的索引而并非真实值的地址(真实值地址还是保存在table-Node的Node节点中)。整体结构为:EntrySet<Entry<key,value>>,即上图红框所示的集合。 当把HashMap$Node节点封装到Entry后就方便遍历。因为Entry提供了两个方法:getkey和getvalue方法。同样的还会将所有的Key单独封装成一个Set类型的集合Keyset(黄色框所示集合),将所有的Value封装成一个Collection类型的集合Values(绿色框所示集合),封装方式同EntrySet。 

 由以上结构就催生出了遍历HashMap的三种方式分别是通过黄框遍历、通过绿框遍历、通过红框遍历。

1.先取出所有Key,再通过Key取出对应的value(黄框遍历法)

Set keyset = map.keySet(); //得到封装好的所有Key即黄框

for (Object key : keyset) { //用增强for的方式遍历
    System.out.println(key + "-" + map.get(key));
}

Iterator iterator = keyset.iterator();//用迭代器遍历
while (iterator.hasNext()) {
    Object key = iterator.next();
    System.out.println(key + "-" + map.get(key));
}

2.直接取出所有Value(绿框遍历法)

Collection values = map.values();//得到所有Value的集合即lv框

for (Object value : values) {//用增强for直接遍历
    System.out.println(value);
}

3.通过EntrySet来获取K-V(红框遍历法)

Set entrySet = map.entrySet();//得到红框所示集合

for (Object entry : entrySet) {//用增强for遍历需要把接收到的entrySet向下转型为Map.Entry,因为Map.Entry可以使用getKey和getvalue方法。
    Map.Entry m = (Map.Entry) entry;//将Object类型的 entry 转成 Map.Entry类型
    System.out.println(m.getKey() + "-" + m.getValue());
}

SAP 财务BAPI_ACC_DOCUMENT_POST批导的税务tax 最近遇到了关于SAP财务凭证批导要bapi:BAPI_ACC_DOCUMENT_POST增加税的功能要求,查阅了一众文献发现都不尽如人意,所以想着自己写一个趟过的雷吧。 一般前台sap的凭证是有自动计算税码的勾选框的,但是bapi却并没有这个字段。 实际操作过程中1.可以定义一个税额的结构,参考bapiactx09 2.在会计分录上传如果需要增加税码的时候,譬如总账gl,需要对应tax_code 3.通过CALCULATE_TAX_FROM_GROSSAMOUNT 计算出税额和acct_k... 阅读详情

相关推荐

昇腾310B实战:FFmpeg硬件加速全流程解析与性能优化

本文详细解析了昇腾310B与FFmpeg硬件加速的全流程,包括环境配置、性能优化及常见问题排查。通过实战案例展示,昇腾310B在视频转码中性能提升可达6倍,同时降低功耗,特别适合多媒体处理和高性能计算场景。

m3n5b7v8c9x的博客 733

Java 常见集合(ArrayList,HashMap,HashSet)的特点以及遍历方法

Java 常见集合(ArrayList,HashMap,HashSet)的特点以及遍历方法 1. ArrayList的特点 ①有序(因此可用for循环进行遍历) ②用Object数组储存对象 ③默认大小为10 ④内容不够时会自动增大 ⑤内容可重复 ArrayList的三种遍历方式: ①for循环 public static void main(String[] args){ //创建List ArrayList list = new ArrayList(); list.a

weixin_44735551的博客 1551

紫光同创国产FPGA学习之Fabric Debugger

文章从紫光同创参考书拷贝过来的。因为我用的时候,看了一下就会用了(纯粹只是会用了,默认和xilinx的一样),没有看教程。先更新点文本,后面在写程序。 一、      软件简介 Fabric Debugger是一款界面化的FPGA芯片调试工具,能够针对公司目前以及未来的FPGA芯片进行在线调试。本软件直接与JtagHub、DebugCore交互,能够实时的配置目标FPGA、设置触发条件并且观测结...

my_share的专栏 6391

【Java集合】双列集合HashMap的概念、特点及使用

总的来说,HashMap是Java中的一个强大工具,它可以帮助我们高效地处理大量的数据。但是,我们也需要注意,虽然HashMap的性能很高,但如果不正确地使用它,可能会导致内存泄漏或者数据丢失的问题。因此,我们需要正确地理解和使用HashMap,才能充分发挥它的强大功能。本系列文章写到这里,基本上就告一段落了,主要为大家介绍了集合家族的基础知识,希望能够帮助大家深入理解集合。在这个系列文章中,我们讲述了单列和双列集合的家族体系以及简单的使用。

云端源想的博客 959

为什么传统CNN在视网膜分割中败给Mamba?从血管拓扑学揭秘Serp-Mamba的蛇形扫描黑科技

本文深入分析了传统CNN在视网膜血管分割任务中的局限性,特别是在处理高分辨率图像和复杂血管拓扑结构时。针对这些问题,文章重点介绍了Serp-Mamba模型的核心创新——蛇形交织自适应扫描(SIA)机制,该机制通过让扫描路径自适应地贴合血管曲率,并结合模糊驱动双重校准(ADDR)模块应对极端类别失衡,从而在视网膜血管分割任务上实现了性能的显著突破。

ss78901的博客 893

深入解析组合逻辑环(combinational loop)的成因与解决方案

本文深入解析了数字电路设计中组合逻辑环(combinational loop)的成因与危害。通过边沿检测和中断轮询(round_robin)仲裁器等实例,揭示了代码如何意外形成环路,并对比了插入触发器、重构逻辑以及状态机思维三种核心解决方案,帮助硬件工程师从根本上避免这一常见设计陷阱,确保电路稳定可靠。

weixin_28278377的博客 313

Day8 Java基础—HashMap与集合的各自特点

HashMap的特点: 1、存储结构是key-value形式 2、HashMap集合里面的数据是无序的,数组和list都是有序的 3、key是不可以重复的,value可以重复 HashMap map=new HashMap(); map.put("aa", 11);//map存储数据的格式:key,value map.put("bb", "你好"); map.put("cc",...

fggsgnhz的博客 290

基于深度学习的干扰识别

本文是记录我上半年仿真和复现干扰识别的过程,展示的主要是一些需要注意的点以及仿真的相关结果。

qq_55218335的博客 1702

Java集合中的HashMap的特点及优缺点

树化是当链表长度大于8,且数组容量大于等于64时,将链表转化为红黑树红黑树:是一种自平衡的二叉树,目的是为了提高查询速度,因为链表一旦长了之后,查询速度就会变得很慢红黑树也会变成链表,当红黑树中的节点小于等于6时,红黑树将转化为链表,这个过程称为链化,此时的节点数很少,链表与红黑树的查询速度不相上下,而且在新增元素的时候,链表不用计算节点的位置,直接插在尾部,但红黑树还要计算节点的位置,因此他们两个相互转化可以形成很好的互补在实际开发中,多用于缓存数据。

weixin_68690236的博客 832

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

【系统架构设计师】预测试卷一:综合知识(75道选择题)

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,架构风格反映领域中众多系统所共有的结构和 (48),强调对架构(49)的重用。 (48) A. 语义特性 B. 功能需求 C. 质量属性 D. 业务规则 (49) A. 分析 B. 设计 C.实现

数据知道的博客 7766

Java集合框架HashMap与HashTable特点及使用

宅男说技术 2016-12-20 23:26 先说下Hash表的结构,Hash表是基于数组和链表的符合数据类型,在数组中存放链表的表头。如图: Hash表 HashMap和HashTable就是基于Hash表的存储结构的,键值存放在数组中,对象存放在键值为表头的链表里。下面说说他们主要区别: 1、HashTableHash是同步的,HashMap默认不支持同步; 2、HashTa

u011277123的博客 1922

FPGA实现LVDS接口(1)--IBUFDS原语、OBUFDS原语和IOBUFDS原语的介绍及使用(仿真/源码)

通过本文您会学到:Xinlix的源语IBUFDS、OBUFDS和IOBUFDS是什么?

孤独的单刀 2万+

编程自学指南:java程序设计开发,Java Map 集合,Map 集合的概念、特点和用途,HashMap、TreeMap 和 LinkedHashMap 的使用方法和区别,Map 集合的内部实现原理

编程自学指南:java程序设计开发,Java Map 集合,Map 集合的概念、特点和用途,HashMap、TreeMap 和 LinkedHashMap 的使用方法和区别,Map 集合的内部实现原理

zl515035644的博客 906

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

看动画,学Java集合教程07:HashMap 特点及优缺点

看动画,学Java集合教程07:HashMap 特点及优缺点 动画演示 HashMap 特点及优缺点 视频全集 看动画,学Java集合 其他教程 2021版Java同步器教程 2021版Java线程池教程 2021版Java多线程教程 代码 Github地址【全部代码】 ...

人人都是程序员官方博客 411

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Java集合类面试六】、 HashMap有什么特点?

主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。2、HashMap可以使用null作为key或value。1、HashMap是线程不安全的实现;

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 262

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

哈希表——Java集合中的HashSet,TreeSet,HashMap等使用方法及特点

Java集合中常用到的有关于哈希表的知识,设计HashSet,HashMap,TreeSet等使用方法以及他们之间的相同点和不同点,还有关于他们的底层逻辑。

weixin_53379153的博客 730

Java集合Collection、Map(JDK1.8的HashMap)的各个功能特点及总结

Java中集合总结 可以 点击看大图 结构分析 数组 : 查询快,增删慢 链表 : 查询慢,增删快 哈希表 : 保证元素的唯一 引用块内容 Collection List 特点: 有序且可重复的 ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线程安全,...

Kato_op的博客 929

JAVA基础——Map集合,Map集合特点,根据键找值,寻找键和值,HashMap,TreeMap,LinkedHashMap的基本功能,hashtable与hashMap区别

一、 Map集合概述和特点 Map接口概述 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map的键唯一,Collection的子体系Set是唯一的 Map集合的数据结构(TreeMap,hashMap)值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 二、 Map集合的功能概述 1. 添加功能 V put(K key,V value):添加元素。

Mr_GYF的博客 2107

Java是如何存储元素的(3)—Map集合存储数据原理(为什么HashMap集合的key部分的特点是无序,不可重复)

(一)Map集合结构图 (二)Map集合中常用的方法 (1)往Map集合中添加元素 V put(Kkey, Vvalue) 将指定的值与该映射中的指定键相关联(可选操作)。 这个和Collection不一样,Collection用的是add(); (2)清空 void clear() 从该地图中删除所有的映射(可选操作)。 Collection中,也有这个...

在这个充满危险的乱世之中,只有学会烤鸡才能顽强的活下去。 2024

Java 集合深入理解(16):HashMap 主要特点和关键方法源码解读

读完本文你将了解到: 点击查看 Java 集合框架深入理解 系列 - - 乾杯什么是 HashMapHashMap 的特点HashMap 的 13 个成员变量HashMap 的初始容量和加载因子HashMap 的关键方法 HashMap 的 4 个构造方法HashMap 中的链表节点HashMap 中的添加操作HashMap 中的哈希函数 hashHashMap

672

Java16-day07【Map(概述、特点、功能、遍历)、HashMap集合练习、集合嵌套、Collections、模拟斗地主升级版】

01_Map集合概述和特点 02_Map集合的基本功能 03_Map集合的获取功能 04_Map集合的遍历(方式1) 05_Map集合的遍历(方式2) 06_HashMap集合练习之键是String值是Student 07_HashMap集合练习之键是Student值是String 08_集合嵌套之ArrayList嵌套HashMap 09_集合嵌套之HashMap嵌套ArrayList 10_统计字符串中每个字符出现的次数 11_Collections概述和使用 12_ArrayList集合存储学生并排序

upward 909

【Java集合 - Map】HashMap / HashTable / TreeMap 特点、对比、遍历及运用(附三个案例代码)

Java集合/Map个人笔记 Map:HashMap、TreeMap HashSet与HashMap的区别 HashMap与HashTable的区别 案例

YundyCinnamon的博客 494

java集合

1.public boolean add(E e): 添加元素 添加成功返回true2.public void clear(): 清空集合元素3.public boolean isEmpty(): 判断集合是否为空,是空返回true,反之4.public int size(): 获取集合的大小5.public boolean contains(Object obj): 判断集合中是否包含某个元素。

KBkongbaiKB的博客 930

深入理解 Java 集合框架:HashSet、HashMap、Hashtable、LinkedHashSet、TreeSet 和 ConcurrentHashMap 的特点、应用场景与性能对比

它已经被标记为不推荐使用的类,主要是由于线程安全的问题和与现代。:当你需要一个无重复元素的集合,并且要保持元素的插入顺序时,使用。会根据元素的自然顺序或者通过构造函数传入的比较器对元素进行排序。不允许重复:如果向集合中添加一个已经存在的元素,添加操作会失败。即元素的顺序是按照它们被插入的顺序排列的。是线程安全的,它的方法是同步的,适合多线程环境下使用。的一个子类,它是基于哈希表和双向链表实现的,提供了。它不允许有重复的元素,集合中的元素是唯一的。:当你需要快速查找元素,且不关心元素顺序时,

skvjw的博客 729
下一篇: Java学习笔记之集合
hssh_
博客等级 码龄5年 37粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值