当前位置: 首页 > news >正文

Java 中 HashMap集合使用

目录

一. HashMap概述

二. HashMap特点

三. HashMap构造方法

四. HashMap的常用方法

五. 使用注意事项

六. 代码示例


一. HashMap概述

HashMap 是 Java 中的一个非常重要的类,它实现了 Map 接口,用于存储键值对(key-value pairs)。HashMap 是基于哈希表的 Map 接口实现,它允许空键(null key)和空值(null value),并且不保证映射的顺序。

二. HashMap特点

  1. 基于哈希表HashMap 使用哈希表来存储数据,因此它具有很快的查找速度,通常为常数时间复杂度 O(1)。
  2. 键值对存储HashMap 存储的是键值对,其中每个键映射到一个值。
  3. 键的唯一性HashMap 中的键是唯一的,不允许重复的键存在。如果尝试插入具有相同键的另一个值,旧值将被新值替换。
  4. 允许空值和空键HashMap 允许键或值为 null
  5. 不保证顺序HashMap 不保证元素的顺序,这意味着元素的顺序可能会在每次使用时发生变化。
  6. 非同步HashMap 不是线程安全的。如果需要线程安全的 HashMap,可以使用 Collections.synchronizedMap 方法包装它,或者使用 ConcurrentHashMap

三. HashMap构造方法

HashMap 提供了多种构造方法,允许你指定初始容量和加载因子等参数:

  1. HashMap():创建一个初始容量为 16,加载因子为 0.75 的空 HashMap
  2. HashMap(int initialCapacity):创建一个指定初始容量和默认加载因子(0.75)的空 HashMap
  3. HashMap(int initialCapacity, float loadFactor):创建一个指定初始容量和加载因子的空 HashMap
  4. HashMap(Map<? extends K, ? extends V> m):创建一个包含映射关系与指定 Map 相同的 HashMap

四. HashMap的常用方法

  1. put(K key, V value):将指定的值与此映射中的指定键关联。
  2. get(Object key):返回指定键所映射的值;如果映射中不包含该键,则返回 null
  3. remove(Object key):如果存在一个键的映射关系,则将其从映射中移除。
  4. keySet():返回映射中包含的键的 Set 视图。
  5. values():返回映射中包含的值的 Collection 视图。
  6. entrySet():返回映射中包含的键值映射关系的 Set 视图。
  7. clear():从映射中移除所有键值对。

五. 使用注意事项

  1. HashMap 中的元素数量超过容量和加载因子的乘积时,HashMap 会自动进行扩容,这涉及到重新计算哈希值和重新分配元素,可能会导致性能下降。
  2. HashMapkeySet()values()entrySet() 方法返回的集合视图支持对原 HashMap 的修改。
  3. 在多线程环境中,如果需要线程安全的 HashMap,可以使用 Collections.synchronizedMap 方法包装它,或者使用 ConcurrentHashMap

六. 代码示例

代码示例中主要使用了一些map操作方法

package com.example.demo01;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;/*** 文件名:HashMapMian* 创建者:* 创建时间:2024-11-02* 描述:HashMap常用操作方式示例*/
public class HashMapMian {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();//1.调用put()方法增添数据map.put("小红",19);map.put("小明",25);map.put("小黑",27);map.put("小白",21);//2.根据key获取valueSystem.out.println(map.get("小明"));//3.调用remove()方法删除数据map.remove("小明");//4.调用containsKey()方法查看是否存在指定的键boolean b = map.containsKey("小红");System.out.println(b);//5.调用containsValue()方法查看是否存在指定的值boolean bbb = map.containsValue(19);//6.调用isEmpty()方法查看集合是否为空boolean empty = map.isEmpty();System.out.println(empty);//7.获取key列表Set<String> keyedSet = map.keySet();System.out.println("key: "+keyedSet);//8.获取所有值Collection<Integer> values = map.values();System.out.println(values);//用 Java8 流来处理值,value求和int sumOfAges = map.values().stream().mapToInt(Integer::intValue).sum();System.out.println("求和: "+sumOfAges);// 过滤出所有大于 25 的年龄Collection<Integer> filteredValues = map.values().stream().filter(value -> value > 25).collect(Collectors.toList());System.out.println("大于 25 的年龄: "+filteredValues);//9.清空map集合map.clear();System.out.println(map.isEmpty());}
}

相关文章:

Java 中 HashMap集合使用

目录 一. HashMap概述 二. HashMap特点 三. HashMap构造方法 四. HashMap的常用方法 五. 使用注意事项 六. 代码示例 一. HashMap概述 HashMap 是 Java 中的一个非常重要的类&#xff0c;它实现了 Map 接口&#xff0c;用于存储键值对&#xff08;key-value pairs&#…...

#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶之Mongodb未授权访问

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

平台化运营公司如何在创业市场招商

在当今商业环境中&#xff0c;平台化运营的公司正成为推动经济发展的重要力量。对于这类公司而言&#xff0c;在创业市场招商意义重大。 平台化运营公司具有独特特点&#xff1a;通过搭建开放共享平台连接供需双方&#xff0c;实现资源优化配置与价值创造。比如电子商务平台、社…...

飞书API-获取tenant_access_token

1.在飞书工作台创建应用&#xff0c;跳到开发者后台&#xff0c;选创建企业自建应用 2.设置并发布应用 必须要发布应用才可以开始使用了&#xff01;&#xff01;&#xff01; 3.调用获取token的API 参考链接&#xff1a; 开发文档 - 飞书开放平台https://open.feishu.cn/do…...

(新)docker desktop镜像迁移

背景 docker desktop默认安装在系统c盘&#xff0c;久而久之随着镜像拉取的越多&#xff0c;系统盘占用则越来越大。现有的网络资源关于docker desktop迁移都是旧版本的&#xff0c;即4.30版本之前。在4.30版本及以后&#xff0c;在运行wsl -l -v时只有docker-desktop只有这一项…...

单向函数、单向陷门函数、困难问题

1、单向函数 设函数 yf(x) &#xff0c; 对于给定的x&#xff0c;计算出y很容易&#xff1b;对于给定的y&#xff0c;计算出x很难。 2、单向陷门函数 设函数 yf(x) &#xff0c;且f有陷门&#xff0c; 对于给定的x&#xff0c;计算出y很容易&#xff1b;对于给定的y&#…...

MYSQL 小猫钓鱼 - 猫王争霸之〈主从设计〉

在美丽的森林中&#xff0c;小猫们的钓鱼大赛依旧热闹非凡&#xff0c;而 “猫王争霸” 的竞争也越来越激烈。随着时间的推移&#xff0c;越来越多的动物们开始关注这场有趣的比赛&#xff0c;对鱼表数据的查询请求也急剧增加。 一、请求压力剧增 花猫看着鱼表发愁道&#xf…...

arcgis坐标系问题

2000数据框的工程只能打开2000坐标系的矢量数据和栅格数据&#xff08;影像图&#xff09;&#xff0c;如果打开80的数据则会投影错误&#xff0c;出现较大偏差。 解决方案&#xff1a;80数据框打开80数据&#xff0c;2000数据库打开2000数据。...

ubuntu 24.04中安装 Easyconnect,并解决版本与服务器不匹配问题

下载安装包 下载地址 https://software.openkylin.top/openkylin/yangtze/pool/all/ 页面搜索 easyconnect 选择 easyconnect_7.6.7.3.0_amd64.deb安装 sudo dpkg --install easyconnect_7.6.7.3.0_amd64.deb卸载 sudo dpkg --remove easyconnect出现的问题 安装以后第…...

【软考】RUP相关考点总结

RUP&#xff0c;是一个重量级过程&#xff0c;提供一个在线指导&#xff0c;为所有方面提供指导方针。 关于RUP&#xff08;统一软件开发过程&#xff09;的9个核心工作流&#xff0c;如果考试中出现&#xff0c;可能会以以下几种方式进行考察&#xff1a; 定义和描述&#xff…...

PostgreSQL 删除角色

我们在使用 PostgreSQL 数据库的时候&#xff0c;经常会遇到这样的场景&#xff0c;就是某个角色&#xff0c;现在不需要了&#xff0c;我们需要删除。但是在删除的时候又提示你无法删除角色。下面看一下具体的情况。 DROP USER cloud_readonly > ERROR: role "cloud…...

华为HCIP —— QinQ技术实验配置

一、QinQ的概述 1.1QinQ的概念 QinQ&#xff08;802.1Q in 802.1Q&#xff09;技术是一项扩展VLAN空间的技术&#xff0c;通过在原有的802.1Q报文基础上再增加一层802.1Q的Tag来实现。 1.2QinQ封装结构 QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VL…...

全网最简单的GraphRAG讲解,包你懂

一、什么是 GraphRAG&#xff1f; GraphRAG&#xff08;基于图的检索增强生成&#xff09;是在传统 RAG 方法的基础上&#xff0c;引入了图数据结构的新型方法。它利用大语言模型的强大自然语言理解能力&#xff0c;从非结构化文本中抽取实体和关系&#xff0c;构建知识图谱&a…...

rust 压缩解压库flate2保姆级教程

前言 flate2 是 Rust 中用于处理 gzip 和其他压缩格式的库。以下是 flate2 的主要 API 和用法说明。 依赖添加 在你的 Cargo.toml 中添加依赖&#xff1a; [dependencies] flate2 "1.0.34"主要模块 flate2::write&#xff1a;用于压缩数据的写入器。flate2::re…...

秒杀优化(异步秒杀,基于redis-stream实现消息队列)

目录 秒杀优化一&#xff1a;异步秒杀1&#xff1a;思路2&#xff1a;实现 二&#xff1a;redis实现消息队列1&#xff1a;什么是消息队列2&#xff1a;基于list结构实现消息队列3&#xff1a;基于pubsub实现消息队列4&#xff1a;基于stream实现消息队列5&#xff1a;stream的…...

Node.js——fs模块-文件读取

1、文件读取&#xff1a;通过程序从文件中去除其中的数据 2、方法 方法 说明 readFile 异步读取 readFileSync 同步读取 createReadStrean 流式读取 3、readFile 异步读取 语法&#xff1a; 本文的分享到此结束&#xff0c;欢迎大家评论区一同讨论学习&#xff0c;下一…...

深入理解 ZooKeeper:分布式协调服务的核心与应用

一、引言 随着互联网技术的飞速发展&#xff0c;分布式系统的规模和复杂性不断增加。在分布式环境中&#xff0c;各个节点之间需要进行高效的协调和通信&#xff0c;以确保系统的正常运行。ZooKeeper 正是为了解决分布式系统中的协调问题而诞生的一款开源软件。它提供了一种简单…...

你竟然还不了解 LDAP?

目录 什么是 LDAP LDAP 的工作原理 LDAP 的数据模型 LDAP 操作 LDAP 的使用场景 常见的 LDAP 服务器 小结 什么是 LDAP LDAP&#xff08;Lightweight Directory Access Protocol&#xff0c;轻量级目录访问协议&#xff09;是用于访问和管理目录服务的一种开放协议&…...

宝塔使用clickhouse踩坑

前言 最近有个物联网项目&#xff0c;需要存储物联网终端发送过来的信息&#xff08;类似log日志&#xff0c;但又要存储在数据库里&#xff0c;方便后期聚合统计&#xff09;&#xff0c;本来想写文件的奈何客户要求聚合统计&#xff0c;所以只能用数据库才能达到更高的计算效…...

Linux命令学习记录

ls 查看文件资源&#xff0c;ls [选项] [路径] ls ls [单个选项] ls [组合选项]&#xff0c;选项的组合与顺序无关 ls --help 查看更多命令参数 clear 清屏 cd 更换工作目录&#xff0c;cd [路径] cd [特殊路径符] . 表示当前目录 .. …...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...