java 数据结构-HashMap

一、hashmap特点

        1、HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

        2、HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

        3、HashMap 是无序的,即不会记录插入的顺序。

        4、HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

 HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。

HashMap 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

基本类型对应的包装类表如下:

基本类型引用类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

HashMap 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.HashMap; // 引入 HashMap 类

以下实例我们创建一个 HashMap 对象 Sites, 整型(Integer)的 key 和字符串(String)类型的 value:

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

二、常用方法

 1、添加元素-put()

HashMap 类提供了很多有用的方法,添加键值对(key-value)可以使用 put() 方法:

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {// 创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();// 添加键值对Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");System.out.println(Sites);}
}

 2、访问元素get()

 以下实例创建一个字符串(String)类型的 key 和字符串(String)类型的 value:

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {// 创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();// 添加键值对Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");System.out.println(Sites.get(3));}
}

3、删除元素 remove()

我们可以使用 remove(key) 方法来删除 key 对应的键值对(key-value):

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {// 创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();// 添加键值对Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");Sites.remove(4);System.out.println(Sites);}
}

删除所有键值对(key-value)可以使用 clear 方法

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {// 创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();// 添加键值对Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");Sites.clear();System.out.println(Sites);}
}

4、计算大小

如果要计算 HashMap 中的元素数量可以使用 size() 方法:

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {// 创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();// 添加键值对Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");System.out.println(Sites.size());}
}

5、迭代 HashMap

可以使用 for-each 来迭代 HashMap 中的元素。

如果你只想获取 key,可以使用 keySet() 方法,然后可以通过 get(key) 获取对应的 value,如果你只想获取 value,可以使用 values() 方法。

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {// 创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();// 添加键值对Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");// 输出 key 和 valuefor (Integer i : Sites.keySet()) {System.out.println("key: " + i + " value: " + Sites.get(i));}// 返回所有 value 值for(String value: Sites.values()) {// 输出每一个valueSystem.out.print(value + ", ");}}
}

Java HashMap 方法

描述
clear()删除 hashMap 中的所有键/值对
clone()复制一份 hashMap
isEmpty()判断 hashMap 是否为空
size()计算 hashMap 中键/值对的数量
put()将键/值对添加到 hashMap 中
putAll()将所有键/值对添加到 hashMap 中
putIfAbsent()如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。
remove()删除 hashMap 中指定键 key 的映射关系
containsKey()检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue()检查 hashMap 中是否存在指定的

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

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

相关文章

DBSyncer:一款开源的数据同步工具

DBSyncer&#xff08;简称 dbs&#xff09;是一款开源的实时数据同步中间件&#xff0c;提供 MySQL、Oracle、SQL Server、PostgreSQL、SQLite、Elasticsearch、Kafka、File、SQL 数据库等同步场景&#xff1b;支持上传插件自定义同步转换业务&#xff1b;提供监控全量和增量数…

大型语言模型的中毒攻击的系统评价

大家读完觉得有帮助记得及时关注和点赞&#xff01;&#xff01;&#xff01; 抽象 随着预训练大型语言模型 &#xff08;LLM&#xff09; 及其训练数据集的广泛使用&#xff0c;人们对与其使用相关的安全风险的担忧显著增加。 这些安全风险之一是 LLM 中毒攻击的威胁&#xff…

Windows 10更新失败解决方法

前言 在我们使用 Windows 时的时候&#xff0c;很多时候遇到系统更新 重启之后却一直提示“我们无法完成更新&#xff0c;正在撤销更改” 这种情况非常烦人&#xff0c;但其实可以通过修改文件的方法解决&#xff0c;并且正常更新到最新版操作系统 01修改注册表 管理员身份…

Redis高级|Redis单线程VS多线程(基础)

文章目录 面试题Redis为什么选择单线程为什么逐渐加入多线程特性Redis6、Redis7的多线程特性和IO多路复用入门Redis7多线程 面试题 Redis到底是单线程还是多线程&#xff1f;IO多路复用听说过吗&#xff1f;Redis为什么这么快&#xff1f; Redis为什么选择单线程 其实Redis单…

ONLYOFFICE 的AI技巧-1.集成OCR、文本转图像、电子表格集成等新功能

随着人工智能不断革新数字办公空间&#xff0c;我们通过全新的 ONLYOFFICE AI 插件再次实现突破。无论您是长期用户还是新手&#xff0c;这些更新都将让您的文档处理更加智能、直观且高效。让我们一起来了解这些最新增强功能——部分功能已在 ONLYOFFICE 文档 8.3.3 版本中上线…

Snipaste:一款简单强大的跨平台截图工具

给大家介绍一款我在日常写作中使用的截图工具&#xff1a;Snipaste 。它是一个支持截图&#xff08;Snip&#xff09;和贴图&#xff08;Paste&#xff09;功能的免费软件&#xff0c;支持 Windows、macOS、Linux 跨平台。 智能截图 Snipaste 提供了强大的截图功能&#xff0c…

python学习打卡day52

DAY 52 神经网络调参指南 知识点回顾&#xff1a; 随机种子内参的初始化神经网络调参指南 参数的分类调参的顺序各部分参数的调整心得 作业&#xff1a;对于day41的简单cnn&#xff0c;看看是否可以借助调参指南进一步提高精度。 day41的简单CNN最后的结果&#xff0c;今天要做…

自定义线程池 4.0

自定义线程池 4.0 1. 简介 上次我们实现了自定义线程池的 3.1 版本&#xff0c;提供了线程工厂创建线程和工具类创建简单线程池的功能&#xff0c;增强了线程池的灵活性&#xff0c;并且用起来更加方便了&#xff0c;本文我们将做如下的优化&#xff1a; 给线程池添加关闭的…

list is not in GROUPBY clause and contains nonaggregated column ‘*.*‘

SELECT list is not in GROUP BY clause and contains nonaggregated column mydb.t.address which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 关于查询列不在分组字段内触发错误 之前我一直使用其…

Linux vmware image iso qcow2镜像大全

Download Linux VMware Images | Linux VMware Images

城市排水管网液位流量监测系统解决方案

一、方案背景 城市排水管网作为城市的“生命线”&#xff0c;其运行状况直接关系到城市的防洪排涝、水环境质量以及居民的生活质量。随着城市化进程的加速&#xff0c;城市排水管网规模不断扩大&#xff0c;结构日益复杂&#xff0c;传统的人工巡检和简单监测手段已难以满足对排…

算法学习笔记:3.广度优先搜索 (BFS)——二叉树的层序遍历

什么是广度优先搜索 (BFS)? 想象一下你在玩一个迷宫游戏&#xff0c;你需要找到从起点到终点的最短路径。广度优先搜索 (BFS) 就像是你在迷宫中逐层探索的过程&#xff1a; 先探索距离起点最近的所有位置然后探索距离起点第二近的所有位置以此类推&#xff0c;直到找到终点 …

并发编程-Synchronized

Mark Word 什么是Mark Word&#xff1f; Mark Word是Java对象头中的一个字段&#xff0c;它是一个32位或64位的字段&#xff08;取决于系统架构&#xff09;&#xff0c;用于存储对象的元数据信息。这些信息包括对象的哈希码、锁状态、年龄等。 Mark Word有什么用&#xff1f…

【51单片机】5. 矩阵键盘与矩阵键盘密码锁Demo

1. 矩阵键盘原理 通过矩阵连接的模式&#xff0c;原本需要16个引脚连接的按钮只需要8个引脚就能连接好&#xff0c;减少了I/O口的占用。 矩阵按钮是通过扫描来读取状态的。 2. 扫描的概念 输出扫描示例&#xff1a;数码管扫描 原理&#xff1a;显示第1位→显示第2位→显示第…

Android Studio jetpack compose折叠日历日期选择器【折叠日历】

今天写一个日期选择器&#xff0c;大家根据自己需求改代码&#xff0c;记得点赞支持&#xff0c;谢谢&#xff5e; 这是进入的默认状态 折叠状态选中本周其他日期状态 切换上下周状态 展开日历状态 切换上下月状态 选中状态 代码如下&#xff1a; import android.content.C…

驭码CodeRider 2.0全栈开发实战指南:从零构建现代化电商平台

驭码CodeRider 2.0全栈开发实战指南:从零构建现代化电商平台 一、CodeRider 2.0:重新定义全栈智能开发 1.1 革命性升级亮点 #mermaid-svg-AKjytNB4hD95UZtF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AKjyt…

大模型智能体AutoGen面试题及参考答案

目录 AutoGen 的核心是什么? Agent 在 AutoGen 中承担什么角色? AutoGen 是如何定义 AssistantAgent、UserProxyAgent 等代理类型的? 什么是 GroupChat(组对话)模式? AutoGen 的 system message 在框架中扮演什么作用? 如何通过 Agent 实现自然语言处理? AutoGen…

深度学习笔记26-天气预测(Tensorflow)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、前期准备 1.数据导入 import numpy as np import pandas as pd import warnings import seaborn as sns import matplotlib.pyplot as plt warnings.filt…

day54 python对抗生成网络

目录 一、GAN对抗生成网络思想 二、实践过程 1. 数据准备 2. 构建生成器和判别器 3. 训练过程 4. 生成结果与可视化 三、学习总结 一、GAN对抗生成网络思想 GAN的核心思想非常有趣且富有对抗性。它由两部分组成&#xff1a;生成器&#xff08;Generator&#xff09;和判…

龙虎榜——20250613

上证指数放量下跌收阴线&#xff0c;个股下跌超4000只&#xff0c;受外围消息影响情绪总体较差。 深证指数放量下跌&#xff0c;收阴线&#xff0c;6月总体外围风险较高&#xff0c;转下跌走势的概率较大&#xff0c;注意风险。 2025年6月13日龙虎榜行业方向分析 1. 石油石化&…