JAVA学习-深入研究容器.理解Map

          Map是Java集合框架中的一种容器,它用来存储键值对(key-value pairs)。

一、Map接口的实现类有很多,常用的有HashMap、TreeMap和LinkedHashMap。

1. HashMap:

   - 特点:基于哈希表实现,无序存储,允许存储null键和null值。
   - 使用方法:使用put(key, value)方法存储键值对,使用get(key)方法根据键获取值,使用remove(key)方法移除键值对等。
   - 代码示例:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 5);
int value = map.get("apple");
map.remove("banana");

2. TreeMap:

   - 特点:基于红黑树实现,按照键的自然顺序或自定义比较器进行排序。
   - 使用方法:与HashMap类似,但不能存储null键,按照键的顺序遍历时,会按照排序顺序输出键值对。
   - 代码示例:

Map<String, Integer> map = new TreeMap<>();
map.put("apple", 10);
map.put("banana", 5);
int value = map.get("apple");
map.remove("banana");

3. LinkedHashMap:

   - 特点:基于哈希表和双向链表实现,有序存储,保持元素的插入顺序。
   - 使用方法:与HashMap类似,但遍历时可以按照插入顺序输出键值对。
   - 代码示例:

 Map<String, Integer> map = new LinkedHashMap<>();map.put("apple", 10);map.put("banana", 5);int value = map.get("apple");map.remove("banana");

二、Map与其他容器的比较:

- 与List相比,Map中的元素不是按照索引顺序访问的,而是通过键来获取对应的值。
- 与Set相比,Map存储的是键值对,而Set只存储单个元素。

三、Map的高级应用:

- 遍历Map:使用keySet()、values()或entrySet()方法遍历键、值或键值对。
- 判断键或值是否存在:使用containsKey(key)或containsValue(value)方法。
- 合并Map:使用putAll()方法将一个Map合并到另一个Map中。
- 获取键或值的集合:使用keySet()方法获取键的集合,使用values()方法获取值的集合。
- 使用自定义的对象作为键:需要实现hashCode()和equals()方法来保证键的唯一性和正确性。

         以上是Map的概述、特点、使用方法以及与其他容器的比较和高级应用的简要介绍。具体的代码示例和更详细的说明可以根据具体需求进一步进行学习和实践。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

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

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

相关文章

qt自定义窗口在拖动过程中出现抖动且拖动后位置看上去不对

自定义窗口拖动 引言开发环境关键性代码运行结果原因分析改进代码运行结果globalPos()globalPosition()再次修改代码运行结果区别 引言 本文旨在一个问题的记录&#xff1a;自定义窗口拖动的过程中&#xff0c;窗口不能很好的跟随鼠标移动&#xff0c;此外会出现窗口拖动时抖动…

蓝桥杯赛前模拟

A-似巨龙高歌 题意 对考试的名次重新排序&#xff0c;使得进步最大的进步名次最少。 思路 按照名次从小到大进行排序&#xff0c;这样保证了进步的名次最少&#xff0c;从而取进步的最大值。 代码 #include<bits/stdc.h> #define PII pair<int,int> using n…

Kubernetes(k8s)监控与报警(qq邮箱+钉钉):Prometheus + Grafana + Alertmanager(超详细)

Kubernetes&#xff08;k8s&#xff09;监控与报警&#xff08;qq邮箱钉钉&#xff09;&#xff1a;Prometheus Grafana Alertmanager&#xff08;超详细&#xff09; 1、部署环境2、基本概念简介2.1、Prometheus简介2.2、Grafana简介2.3、Alertmanager简介2.4、Prometheus …

绿联 安装火狐浏览器(Firefox),支持访问路由器

绿联 安装火狐浏览器&#xff08;Firefox&#xff09;&#xff0c;支持访问路由器 1、镜像 linuxserver/firefox:latest 前置条件&#xff1a;动态公网IP。 已知问题&#xff1a; 直接输入中文时&#xff0c;不能完整输入&#xff0c;也可能输入法无法切换到中文&#xff0c;可…

【阿里淘天笔试题汇总】2024-04-10-阿里淘天春招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新淘天近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

Golang教程四(协程,channel,线程安全,syncMap)

目录 一、Goroutine和channel Goroutine Channel 发送和接收操作 缓冲 Channel 关闭 Channel 使用 Channel 进行同步 Select语句 协程超时处理 方法一&#xff1a;使用context.Context 方法二&#xff1a;使用time.Timer/time.Ticker 二、线程安全与sync.Map 线程安…

Vue3大事件项目1 登录注册验证

创建项目 引入 element-ui 组件库 登录&#xff1a;注册样式准备之后&#xff0c;配置校验规则&#xff08;4个条件&#xff1a;一数据、二规则&#xff09; 1. 校验相关 (1) 给当前表单绑上整个的数据对象&#xff1a;el-form > :model"ruleForm" 绑…

二叉树总结

递归返回值 1、如果需要搜索整棵二叉树且不用处理递归返回值&#xff0c;递归函数就不要返回值。 2、如果需要搜索整棵二叉树且需要处理递归返回值&#xff0c;递归函数就需要返回值。 3、如果要搜索其中一条符合条件的路径&#xff0c;那么递归一定需要返回值&#xff0c;…

Notepad++软件安装及配置说明

Notepad是 Windows操作系统下的一套文本编辑器&#xff0c;有完整的中文化接口及支持多国语言编写的功能。 Notepad功能比 Windows自带记事本强大&#xff0c;除了可以用来制作一般的纯文字说明文件&#xff0c;也十分适合编写计算机程序代码。Notepad不但可以显示行号&#xf…

1572. 【基础赛】涂色(paint)

1572. 【基础赛】涂色&#xff08;paint&#xff09; (Input: paint.in, Output: paint.out) 时间限制: 2 s 空间限制: 256 MB 具体限制 题目描述 Introl获得了一个N行的杨辉三角&#xff0c;他将每行中值为奇数的位置涂为了黑色。 Chihiro将提出M次询问&#xff0c;在第L…

Day2 字符串哈希KMP

字符串哈希 KMP 基本 字符串哈希 理论 将一个字符串转成一个数字&#xff0c;可以快速比较两个字符串是否相同等。要求为&#xff1a;相同字符串哈希值相同&#xff0c;不同字符串哈希值尽量不相同。 映射方法通常采用多项式哈希方法&#xff0c;很像进制转换。假设字符串为…

Tomcat服务

Tomcat服务 安装 安装java环境 yum install -y java-1.8.0-openjdk java -version # 看是否成功安装Tomcat&#xff0c;这里以apache-tomcat-8.0.30.tar.gz为例 tar -xvf apache-tomcat-8.0.30.tar.gz -C /usr/local/ mv /usr/local/apache-tomcat-8.0.30 /usr/local/tomc…

萝卜大杂烩 | 10 个杀手级的 Python 自动化脚本

本文来源公众号“萝卜大杂烩”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;10 个杀手级的 Python 自动化脚本 重复性任务总是耗时且无聊&#xff0c;想一想你想要一张一张地裁剪 100 张照片或 Fetch API、纠正拼写和语法等工作…

ELK日志

​​​​​​​

HJ53 杨辉三角的变形(基础数学,生成数组不行,会越界,使用规律)

第一种方法&#xff1a; 生成杨辉三角的方法不行&#xff0c;会出现越界&#xff0c; 数组从[0][0]开始&#xff0c;i行j列 只看列 每一行的最右侧坐标为2*i,下坐标为 0&#xff0c; 0&#xff0c;1&#xff0c;2 0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4 … …

MongoDB聚合运算符:$not

文章目录 语法使用举例 $not聚合运算符用于将指定布尔表达式的值取反&#xff0c;比如&#xff0c;表达式的值为 true&#xff0c; $not返回 false&#xff1b;表达式的值为 false&#xff0c; $not则返回 true。 语法 { $not: [ <expression> ] }使用 除false外…

革命性突破:Stability AI发布全新12B参数Stable LM 2模型,颠覆AI界!

Stability AI已推出其Stable LM 2语言模型系列的最新成员&#xff1a;一个120亿参数的基础模型和一个经过指令调优的变体。这些模型在七种语言上训练&#xff0c;包括英语、西班牙语、德语、意大利语、法语、葡萄牙语和荷兰语&#xff0c;训练数据达到了令人印象深刻的两万亿个…

Linux:动态库加载、编址

目录 一、库的概念 二、动静态库的加载 2.1绝对编址与相对编址 2.1一般程序的加载 三、动态库的加载 一、库的概念 库默认就是一个磁盘级文件&#xff0c;所以在执行代码时&#xff0c;库和可执行程序都会被加载到内存中&#xff0c;从原理上&#xff0c;库函数的调用依旧…

结构型模式--1.适配器模式【托尼托尼·乔巴】

1. 翻译家 在海贼王中&#xff0c;托尼托尼乔巴&#xff08;Tony Tony Chopper&#xff09;是草帽海贼团的船医&#xff0c;它本来是一头驯鹿&#xff0c;但是误食了动物系人人果实之后可以变成人的形态。 乔巴吃了恶魔果实之后的战斗力暂且抛开不谈&#xff0c;说说它掌握的第…

[C++][算法基础]树的重心(树图DFS)

给定一颗树&#xff0c;树中包含 n 个结点&#xff08;编号 1∼n&#xff09;和 n−1 条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树中的一个结点&#xff0c;如果将这个点删除后&a…