集合框架(二)Map系列集合

news2025/1/11 11:07:46

概述

ccaf847f6d784fb5bafa042c56774a29.png

 

7ade022f65c04fa2a7feed08bdb4c371.png
常用方法

fd66c8ae8e714f74a4767f88d701b615.png


遍历方式

Map集合的遍历方式

  1. 键找值:先获取Map集合全部的键,再通过遍历键来找值
  2. 键值对:把“键值对“看成一个整体进行遍历(难度较大)
  3. Lambda:JDK1.8开始之后的新技术(非常的简单)

1.键找值

03c6baca03b148ffbee0c386e28c5fbe.png254a466718f7435ab549c84a4615f0be.png

2.键值对

键值对是如何实现遍历的:

一旦Map集合调用entrySet()方法(就是把Map集合转换成键值对类型的Set集合)就会把Map集合中的每个键和值都封装成一个所谓的entry对象,每个entry对象里面就会包含一个元素的键和值,一旦把键和值封装成一个entry对象了,此时这个entry对象就肯定存在具体的元素类型,也就是Map的entry类型(也叫Map的实体类型),键是String值是Double,这个整体作为一个数据类型。接着entry方法的内部还会继续把这些键值对对象放到一个Set集合里边去,Set集合中的每个元素类型也就是键值对类型(也就是Map.entry<String,Double>),最后这个entry方法内部会把Set集合返回给我们。集合中每个元素有类型了,自然也就能使用增强for循环遍历这个集合了。遍历这个集合的时候元素类型就填Map.entry<String,Double>类型,代表的是键值对类型。

我们可以使用entry变量去遍历Set集合中每一个键值对对象了;entry还提供了getKey()来获取键以及getValue()来获取值。

dc2ebb85e90546d7818e7ebe090e95e6.png

c1ad2753887f43c9b8d3c492d1d46b71.png

3.Lambda

a3230f3e439f4687b65c8f53a8235275.png

其实还是map集合调用forEach方法

a1f934ee135d4e94a5bbf8cfa4b5ac22.png3df1bc89c33f4fbfa034702c7b7ac652.png

 103ed6f949de4309b4b29f20c6c04f60.png

案例:统计投票人数 

HashMap

 HashMap(由键决定特点):无序、不重复、无索引。(用的最多)

HashMap集合的底层原理

  • HashMap跟Hashset的底层原理是一一样的,都是基于哈希表实现的

实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已

1a6e980b142942c78101e70e61c98c2d.pngHashSet集合里面包装的是HashMap集合。

哈希表

  • JDK8之前,哈希表=数组+链表
  • JDK8开始,哈希表=数组+链表+红黑树
  • 哈希表是一种增删改查数据,性能都较好的数据结构。


LinkedHashMap

LinkedHashMap (由键决定特点):由键决定的特点:有序、不重复、无索引。

LinkedHashMap集合的原理

  • 底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)。

实际上:原来学习的LinkedHashset集合的底层原理就是LinkedHashMap。

57796675f90b4c638268065bae4208d3.png
TreeMap

TreeMap (由键决定特点):按照大小默认升序排序、不重复、无索引。

  • 特点:不重复、无索引、可排序(按照键的大小默认升序排序,只能对键排序)
  • 原理:TreeMap跟TreeSet集合的底层原理是一样的,都是基于红黑树实现的排序

TreeMap集合同样也支持两种方式来指定排序规则

  • 让类实现Comparable接口,重写比较规则。
  • TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则。

 

补充知识:集合的嵌套

指的是集合中的元素又是一个集合。

882f808f446647248f9d11bb2ab99be9.png

c716832716c146a587060a57a7544506.png

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第100+1步 ChatGPT文献复现:ARIMAX预测肺结核 vol. 1

基于WIN10的64位系统演示 一、写在前面 各位大佬&#xff0c;好久不见。 《100步入门机器学习》肝完了&#xff0c;不懂大家学了多少了&#xff0c;默认你们都学完了吧。 今年我们换一个玩法&#xff08;灌水&#xff09;&#xff1a;一系列更接近实战的教程&#xff0c;复…

js导出的excel文件无法打开/打开乱码,excel无法打开xxx.xlsx因为文件格式或文件扩展无效

excel无法打开xxx.xlsx因为文件格式或文件扩展无效 使用 a 标签导出这里就不细说了&#xff0c;直接说上述问题解决方案 在调用导出接口的时候加上两个参数 responseType: “blob” responseEncoding: “utf8” export function test(data) {return util({url: /test,method: …

javaScript | 练习:给出一个存储学生信息的对象数组,实现对每个对象的遍历,先输出每个对象的属性名,再输出对应的属性值

考察的知识点包括&#xff1a; JavaScript 数组的遍历。JavaScript 对象的遍历&#xff0c;特别是使用 for...in 循环。如何使用方括号[]和点号 . 访问对象的属性和方法。控制台输出&#xff08;console.log&#xff09;的使用。 控制台输出结果如下&#xff1a; 参考代码如下…

C++17中auto作为非类型模板参数

非类型模板参数是具有固定类型的模板参数&#xff0c;用作作为模板参数传入的constexpr值的占位符。非类型模板参数可以是以下类型&#xff1a; (1).整型&#xff1b; (2).枚举类型&#xff1b; (3).std::nullptr_t&#xff1b; (4).指向对象的指针或引…

jpg图片格式转换怎么做?教你一种图片格式转换方法

Jpg格式图片怎么快速转换&#xff1f;常见的图片格式有jpg、png等格式&#xff0c;当我们想要将常用的jpg格式图片转换成其他格式的时候&#xff0c;要怎么办呢&#xff1f;很简单通过使用图片转换器&#xff08;https://www.yasuotu.com/geshi&#xff09;&#xff0c;无需下载…

简单接入电商API接口|轻松实现实时采集淘宝、抖音、快手、1688商品,挖掘潜力款

今天给大家带来一款非常实用的电商API接口&#xff0c;这款数据采集接口支持淘宝采集、抖音采集、快手采集、1688采集以及潜力款分析&#xff0c;功能强大&#xff0c;助您在电商领域更上一层楼。 首先&#xff0c;我们来了解一下淘宝采集功能。作为国内最大的电商平台&#xf…

系统分析师论文总结【持续更新】

2024年3月4日&#xff0c;新的软考规则出来&#xff0c;高项改为一年一次&#xff0c;架构师改为一年两次。 下半年考试安排&#xff0c;如下图&#xff08;来源官网&#xff09; 收集整理系统分析师论文&#xff0c;方便备查。 一、2010年论文 1、论软件维护及软件课维护性…

C++ 哈希

目录 1. 哈希概念 2. 哈希冲突 3. 哈希函数 4. 哈希冲突解决 4.1 闭散列 4.2 开散列 4.3 对于哈希表的补充 5. 开散列与闭散列比较 6. 哈希表的模拟实现以及unorder_set和unorder_map的封装 1. 哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间…

代码随想录刷题笔记 DAY 43 | 完全背包基础 | 零钱兑换 II No.518 | 组合总和 IV No.377

文章目录 Day 4401. 完全背包基础<1> 完全背包的区别<2> 案例 02. 零钱兑换 II&#xff08;No. 518&#xff09;<1> 题目<2> 笔记<3> 代码 03. 组合总和 IV&#xff08;No. 377&#xff09;<1> 题目<2> 笔记<3> 代码 Day 44 …

three.js 相机跟着玩家走(第三人称漫游)

<template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div></div></el-main></el-container></div> </template>s <script> // 引入轨道…

实在TARS大模型斩获多项重磅大奖,AI领域实力认可

近日&#xff0c;实在智能TARS&#xff08;塔斯&#xff09;大模型凭借在多个垂直行业场景的优秀落地应用案例&#xff0c;以及AIGC领域的深耕和技术积累&#xff0c;荣获多项重磅大奖。 TARS大模型是是实在智能基于在自然语言处理&#xff08;NLP&#xff09;领域深厚的技术积…

高等数学常用公式

高等数学常用公式 文章目录 内容大纲 内容 大纲 感谢观看 期待关注 有问题的小伙伴请在下方留言&#xff0c;喜欢就点个赞吧

区块链基础知识(下):共识机制 附带图解、超详细教学!看不懂你打死我

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 专栏的前面几篇详细了介绍了区块链的核心基础知识 有兴趣学习的小伙伴可以看看→http://t.csdnimg.cn/CstOy 关于区…

RK3588-PCIe

1. 简介 PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;是一种用于连接主板和外部设备的高速串行接口标准。它是 PCI 技术的后继者&#xff0c;旨在提供更高的带宽和更好的性能。 高速传输&#xff1a; PCIe接口提供了高速的数据传输通道&#xff0…

【wine】WINEDEBUG 分析mame模拟器不能加载roms下面的游戏 可以调整参数,快速启动其中一个游戏kof98

故障现象&#xff0c;MAME启动后&#xff0c;游戏都没有识别 添加日志输出&#xff0c;重新启动wine #!/bin/bashexport WINEPREFIX$(pwd)/.wine export WINESERVER$(pwd)/bin/wineserver export WINELOADER$(pwd)/bin/wine export WINEDEBUG"file,mame,warn,err"…

CCF-C推荐会议 IEEE CLOUD‘24 3月24日截稿!深圳开启全球云计算新纪元!

会议之眼 快讯 IEEE CLOUD(IEEE International Conference on Cloud Computing)即IEEE云计算国际会议将于 2024 年7月7日至13日在中国深圳举行&#xff01;IEEE CLOUD由lEEE Computer Society主办&#xff0c;CCF服务计算专委会、北京大学、IBM Research承办。CLOUD一直是研究人…

Linux---多线程(上)

一、线程概念 线程是比进程更加轻量化的一种执行流 / 线程是在进程内部执行的一种执行流线程是CPU调度的基本单位&#xff0c;进程是承担系统资源的基本实体 在说线程之前我们来回顾一下进程的创建过程&#xff0c;如下图 那么以进程为参考&#xff0c;我们该如何去设计创建一个…

STM32串口:DMA空闲中断实现接收不定长数据(基于HAL库)

STM32串口&#xff1a;DMA空闲中断实现接收不定长数据&#xff08;基于HAL库&#xff09;&#xff1a; 第一步&#xff1a;设置rcc&#xff0c;时钟频率&#xff0c;下载方式 设置system core->RCC如图所示&#xff1a;&#xff08;即High Speed Clock和Low Speed Clock都选…

EasyNVR级联EasyCVR,在EasyCVR播放视频会导致EasyNVR崩溃的原因排查与解决

视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备&#xff0c;平台可以将监控区域内所有部署的监控设备进行统一接入与集中汇聚管理&#xff0c;实现对监控区域的实时视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等&#xff0c;在监控中心…

跨境账号养号怎么做?Facebook、亚马逊运营必看

之前我们讨论过很多关于代理器的问题。它们的工作原理是什么?在不同的软件中要使用那些代理服务器?这些代理服务器之间的区别是什么?什么是反检测浏览器等等。 除了这些问题&#xff0c;相信很多人也会关心在使用不同平台的时代理器的选择问题。比如&#xff0c;为什么最好…