Java 中 HashMap集合使用
目录
一. HashMap概述
二. HashMap特点
三. HashMap构造方法
四. HashMap的常用方法
五. 使用注意事项
六. 代码示例
一. HashMap概述
HashMap 是 Java 中的一个非常重要的类,它实现了 Map 接口,用于存储键值对(key-value pairs)。HashMap 是基于哈希表的 Map 接口实现,它允许空键(null key)和空值(null value),并且不保证映射的顺序。
二. HashMap特点
- 基于哈希表:
HashMap使用哈希表来存储数据,因此它具有很快的查找速度,通常为常数时间复杂度 O(1)。 - 键值对存储:
HashMap存储的是键值对,其中每个键映射到一个值。 - 键的唯一性:
HashMap中的键是唯一的,不允许重复的键存在。如果尝试插入具有相同键的另一个值,旧值将被新值替换。 - 允许空值和空键:
HashMap允许键或值为null。 - 不保证顺序:
HashMap不保证元素的顺序,这意味着元素的顺序可能会在每次使用时发生变化。 - 非同步:
HashMap不是线程安全的。如果需要线程安全的HashMap,可以使用Collections.synchronizedMap方法包装它,或者使用ConcurrentHashMap。
三. HashMap构造方法
HashMap 提供了多种构造方法,允许你指定初始容量和加载因子等参数:
HashMap():创建一个初始容量为 16,加载因子为 0.75 的空HashMap。HashMap(int initialCapacity):创建一个指定初始容量和默认加载因子(0.75)的空HashMap。HashMap(int initialCapacity, float loadFactor):创建一个指定初始容量和加载因子的空HashMap。HashMap(Map<? extends K, ? extends V> m):创建一个包含映射关系与指定 Map 相同的HashMap。
四. HashMap的常用方法
put(K key, V value):将指定的值与此映射中的指定键关联。get(Object key):返回指定键所映射的值;如果映射中不包含该键,则返回null。remove(Object key):如果存在一个键的映射关系,则将其从映射中移除。keySet():返回映射中包含的键的Set视图。values():返回映射中包含的值的Collection视图。entrySet():返回映射中包含的键值映射关系的Set视图。clear():从映射中移除所有键值对。
五. 使用注意事项
- 当
HashMap中的元素数量超过容量和加载因子的乘积时,HashMap会自动进行扩容,这涉及到重新计算哈希值和重新分配元素,可能会导致性能下降。 HashMap的keySet()、values()和entrySet()方法返回的集合视图支持对原HashMap的修改。- 在多线程环境中,如果需要线程安全的
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 中的一个非常重要的类,它实现了 Map 接口,用于存储键值对(key-value pairs&#…...
#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶之Mongodb未授权访问
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
平台化运营公司如何在创业市场招商
在当今商业环境中,平台化运营的公司正成为推动经济发展的重要力量。对于这类公司而言,在创业市场招商意义重大。 平台化运营公司具有独特特点:通过搭建开放共享平台连接供需双方,实现资源优化配置与价值创造。比如电子商务平台、社…...
飞书API-获取tenant_access_token
1.在飞书工作台创建应用,跳到开发者后台,选创建企业自建应用 2.设置并发布应用 必须要发布应用才可以开始使用了!!! 3.调用获取token的API 参考链接: 开发文档 - 飞书开放平台https://open.feishu.cn/do…...
(新)docker desktop镜像迁移
背景 docker desktop默认安装在系统c盘,久而久之随着镜像拉取的越多,系统盘占用则越来越大。现有的网络资源关于docker desktop迁移都是旧版本的,即4.30版本之前。在4.30版本及以后,在运行wsl -l -v时只有docker-desktop只有这一项…...
单向函数、单向陷门函数、困难问题
1、单向函数 设函数 yf(x) , 对于给定的x,计算出y很容易;对于给定的y,计算出x很难。 2、单向陷门函数 设函数 yf(x) ,且f有陷门, 对于给定的x,计算出y很容易;对于给定的y&#…...
MYSQL 小猫钓鱼 - 猫王争霸之〈主从设计〉
在美丽的森林中,小猫们的钓鱼大赛依旧热闹非凡,而 “猫王争霸” 的竞争也越来越激烈。随着时间的推移,越来越多的动物们开始关注这场有趣的比赛,对鱼表数据的查询请求也急剧增加。 一、请求压力剧增 花猫看着鱼表发愁道…...
arcgis坐标系问题
2000数据框的工程只能打开2000坐标系的矢量数据和栅格数据(影像图),如果打开80的数据则会投影错误,出现较大偏差。 解决方案:80数据框打开80数据,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,是一个重量级过程,提供一个在线指导,为所有方面提供指导方针。 关于RUP(统一软件开发过程)的9个核心工作流,如果考试中出现,可能会以以下几种方式进行考察: 定义和描述ÿ…...
PostgreSQL 删除角色
我们在使用 PostgreSQL 数据库的时候,经常会遇到这样的场景,就是某个角色,现在不需要了,我们需要删除。但是在删除的时候又提示你无法删除角色。下面看一下具体的情况。 DROP USER cloud_readonly > ERROR: role "cloud…...
华为HCIP —— QinQ技术实验配置
一、QinQ的概述 1.1QinQ的概念 QinQ(802.1Q in 802.1Q)技术是一项扩展VLAN空间的技术,通过在原有的802.1Q报文基础上再增加一层802.1Q的Tag来实现。 1.2QinQ封装结构 QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VL…...
全网最简单的GraphRAG讲解,包你懂
一、什么是 GraphRAG? GraphRAG(基于图的检索增强生成)是在传统 RAG 方法的基础上,引入了图数据结构的新型方法。它利用大语言模型的强大自然语言理解能力,从非结构化文本中抽取实体和关系,构建知识图谱&a…...
rust 压缩解压库flate2保姆级教程
前言 flate2 是 Rust 中用于处理 gzip 和其他压缩格式的库。以下是 flate2 的主要 API 和用法说明。 依赖添加 在你的 Cargo.toml 中添加依赖: [dependencies] flate2 "1.0.34"主要模块 flate2::write:用于压缩数据的写入器。flate2::re…...
秒杀优化(异步秒杀,基于redis-stream实现消息队列)
目录 秒杀优化一:异步秒杀1:思路2:实现 二:redis实现消息队列1:什么是消息队列2:基于list结构实现消息队列3:基于pubsub实现消息队列4:基于stream实现消息队列5:stream的…...
Node.js——fs模块-文件读取
1、文件读取:通过程序从文件中去除其中的数据 2、方法 方法 说明 readFile 异步读取 readFileSync 同步读取 createReadStrean 流式读取 3、readFile 异步读取 语法: 本文的分享到此结束,欢迎大家评论区一同讨论学习,下一…...
深入理解 ZooKeeper:分布式协调服务的核心与应用
一、引言 随着互联网技术的飞速发展,分布式系统的规模和复杂性不断增加。在分布式环境中,各个节点之间需要进行高效的协调和通信,以确保系统的正常运行。ZooKeeper 正是为了解决分布式系统中的协调问题而诞生的一款开源软件。它提供了一种简单…...
你竟然还不了解 LDAP?
目录 什么是 LDAP LDAP 的工作原理 LDAP 的数据模型 LDAP 操作 LDAP 的使用场景 常见的 LDAP 服务器 小结 什么是 LDAP LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是用于访问和管理目录服务的一种开放协议&…...
宝塔使用clickhouse踩坑
前言 最近有个物联网项目,需要存储物联网终端发送过来的信息(类似log日志,但又要存储在数据库里,方便后期聚合统计),本来想写文件的奈何客户要求聚合统计,所以只能用数据库才能达到更高的计算效…...
Linux命令学习记录
ls 查看文件资源,ls [选项] [路径] ls ls [单个选项] ls [组合选项],选项的组合与顺序无关 ls --help 查看更多命令参数 clear 清屏 cd 更换工作目录,cd [路径] cd [特殊路径符] . 表示当前目录 .. …...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
