[JAVA数据结构]HashMap

news/2024/9/12 11:06:16/

目录

1.HashMap

1.1Map的常用方法

1.2HashMap的使用案例


1.HashMap

基于哈希表的实现的Map接口。

Map底层结构HashMap
底层结构哈希桶
插入/删除/查找时间复杂度O(1)
是否有序无序
线程安全不安全
插入/删除/查找区别通过哈希函数计算哈希地址
比较与覆写自定义类型需要覆写equals和
hashCode方法

1.1Map的常用方法

方法解释
V get(Object key)返回 key 对应的 value
V getOrDefault(Object key, V defaultValue)返回 key 对应的 value,key 不存在,返回默认值
V put(K key, V value)设置 key 对应的 value
V remove(Object key)删除 key 对应的映射关系
Set<K> keySet()返回所有 key 的不重复集合
Collection<V> values()返回所有 value 的可重复集合
Set<Map.Entry<K, V>> entrySet()返回所有的 key-value 映射关系
boolean containsKey(Object key)判断是否包含 key
boolean containsValue(Object value)判断是否包含 value

注意:Map.Entry<>是Map内部实现的用来存放key-value相应键值对的内部类 

        其内部有getKey(),getValue与setValue()方法

1.2HashMap的使用案例

创建一个HashMap,及put的使用

import java.util.*;public class Test {public static void Map(){Map<String,Integer> map = new HashMap<>();//创建一个HashMap key的类型为"String" value的类型为"Integer"map.put("a",1);map.put("b",2);map.put("c",3);map.put("d",100);map.put(null,null);map.put("d",4);//当key存在时,则会更新value//向map中put入五个键值对//注意噢,在HashMap中的key和value都可以为nullint size = map.size();System.out.println("size = " + size);//通过size()方法,得到map中键值对的数量.此时size == 5int retGet = map.get("a");System.out.println("retGet = " + retGet);//通过get()方法,得到对应key的value值.此时retGet为1//retGet = map.get("z");//map中的key没有"z",此条程序会报错//注意!!! 当使用get方法时,map中没有对应的key值时,程序会报错int retGOD = map.getOrDefault("z",-1);System.out.println("retGOD = " + retGOD);//此处retGOD为-1//通过getOrDefault()方法,得到对应的key的value值,如果key值不存在//则返回我们设置的默认值"-1".//与get()不同的是,查找的key如果不存在于map中,也不会进行报错boolean retConK = map.containsKey("a");boolean retConV = map.containsValue(4);System.out.println("retConk = " + retConK);System.out.println("retConV = " + retConV);//通过containsKey()方法查找map中是否存在对应的key值//containsValue()方法查找map中是否存在对应的value,可以是一个或多个Set<String> set = map.keySet();for (String s:set) {System.out.print(s + " ");}System.out.println();//通过keySet()方法,返回map中所有的key值,并以set的形式返回int retRemove = map.remove("a");System.out.println("retRemover = " + retRemove);//通过remove()方法,根据key值删除相应的键值对,并返回删除的value值int retReplace = map.replace("b",10);System.out.println("retReplace = " + retReplace);//通过replace()方法,更新key的value--好像直接put也一样?Collection<Integer> collection = map.values();
//        for (int i:collection) {         此方法因为value中有一个null,直接遍历会有一个空指针的报错,int类型也不能与null比较
//            System.out.println(i + " "); 于是乎,有了以下使用迭代器的方式来遍历
//        }
//        System.out.println();Iterator<Integer> iterator = collection.iterator();while (iterator.hasNext()){System.out.print(iterator.next() + " ");}System.out.println();//通过keySet()方法,返回map中所有的value值,以collection的形式返回Set<Map.Entry<String,Integer>> entrySet = map.entrySet();for (Map.Entry<String, Integer> s : map.entrySet()) {System.out.print(s.getKey() + "->" + s.getValue() + " ");}System.out.println();//通过entrySet()方法,得到key与value的对应关系,并使用其getKey与getValue得到相应的值}public static void main(String[] args) {Map();}
}

 

 


http://www.ppmy.cn/news/753212.html

相关文章

有n个数,从中取m个数,可以重复取,有多少种组合

题目&#xff1a; 有n个数&#xff0c;从中取m个数&#xff0c;可以重复取&#xff0c;有多少种组合是123,321,312,321,213,123是一种组合。比如输入3,3&#xff0c;有10种&#xff0c;分别为&#xff0c;111,112,113,122,123,133,222,223,233,333。输入4,2&#xff0c;有10种&…

uva133救济金发放The Dole Queue

背景&#xff1a;输出格式永远是程序员的痛啊&#xff0c;所以请一定注意输出格式。 学习&#xff1a;刚看了同学的博客&#xff0c;发现这道题会在小紫书的那个地方出现&#xff0c;是为了让我们练习自底向下的函数构建方式&#xff0c;所以请有兴趣读者自行将下面的代码改成…

M个加号插入到数字串中使得加和最小(C++实现)

有一个由数字1-9组成的数字串&#xff08;长度不超过200&#xff09;&#xff0c;问如何将M&#xff08;1<M<200&#xff09;个加号插入这个数字串中&#xff0c;使得所形成的算术表达式的值最小。 加号不能加在数字串的最前面或最末尾&#xff0c;也不应有两个或两个以…

腾讯云轻量服务器香港节点24元30M峰值带宽很值得

腾讯云轻量应用服务器Lighthouse香港地域24元一个月起&#xff0c;30Mbps峰值带宽很值得&#xff0c;云服务器吧分腾讯云香港节点轻量应用服务器配置及优惠价格表&#xff1a; 腾讯云香港轻量应用服务器 腾讯云香港轻量应用服务器 腾讯云轻量应用服务器Lighthouse香港节点不用…

700m信号测试软件,5G(NR)中同步信号的测量(SS-RSRP)

同步信号SS-RSRP (Synchronization Signal Reference Signal Received Power) 是同步信号在每个RE的平均功率,其测量在SMTC中的窗时段进行;kangguoying20210113 在5G(NR)网络中终端基于SS-RSRP进行测量,根据它进行小区选择、重选、功率控制和波束管理;RSRP测量报告生成、报告…

全志D1s/F133学习笔记(1)——MangoPi-MQ(芒果派麻雀)上手试玩

一、资料 D1s是全志针对智能解码市场推出的高性价比AIoT芯片。它使用64bit RISC-V架构的阿里平头哥C906处理器&#xff0c;内置了64M DDR2&#xff0c;支持Linux系统&#xff0c;同时集成了大量自研的音视频编解码相关IP&#xff0c;可以支持H.265,、H.264、MPEG-1/2/4、JPEG等…

ctfshow web133和其他命令执行的骚操作

这里是总结自己最近遇到的命令执行题&#xff0c;感觉还是不错分享出来。也欢迎师傅们评论一些骚操作 一. ctfshow web入门 133 1.正常解 <?php error_reporting(0); highlight_file(__FILE__); //flag.php if($F $_GET[F]){if(!preg_match(/system|nc|wget|exec|passth…

Excel 合并单元格筛选时只出现首行

一、问题描述 如果对合并单元格直接筛选&#xff0c;只能筛选出第一个单元格的值 二、原因分析&#xff1a; Excel筛选单元格时&#xff0c;遇到不连续区域&#xff08;即中间有空白单元格&#xff09;会识别不到后续内容&#xff1b; 合并单元格后&#xff0c; 除首行外&…

解决Github 限制100M大文件上传

笔者在GitHub仓库上传超过100M的video时遇到了push不了的情况&#xff0c;提示限制了100M&#xff0c; this exceeds GitHubs file size limit of 100.00 MB 随后使用 git-lfs 解决了。 Git Large File Storage | Git Large File Storage (LFS) replaces large files such as a…

RT-Thread 柿饼派M7 全志F133 ddr 运行xboot

前言 最近拿到 RT-Thread 柿饼派M7的开发板&#xff0c;默认运行的是RT-Thread Persim OS&#xff0c;不过我把固件给擦除了&#xff0c;无法开机了&#xff0c;所以先从最基本的启动下手开发板板子SDEMMC&#xff0c;也就是板载 SD卡&#xff0c;所以无法使用全志的烧卡工具制…

Android Ble 连接设备失败 onConnectionStateChange status 返回133

Android Ble 连接设备失败时回调函数 onConnectionStateChange status 返回133 开始找问题 各种mac地址&#xff0c;权限&#xff0c;线程…找了个遍&#xff0c;结果就是返回纹丝不动 又因为 mBluetoothGatt mBluetoothDevice.connectGatt(mContext, true, mGattCallback); 第…

PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2、Add-in Card 它们有啥区别?这些概念你搞清楚了吗?

搞硬件或通信的“攻城狮”们&#xff0c;免不了要和各种通信协议及接口打交道。比如&#xff0c;我们经常接触PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2(NGFF)、Add-in Card这些概念&#xff0c;作为“攻城狮”队伍中的一员&#xff0c;你搞清楚它们之间的关系了吗&…

NV133FHM-N52屏在rk3288的Android7.1上的点亮

1&#xff0c;原来的平台用的是lg的133的屏&#xff0c;是可以正常使用的&#xff0c;现在开始用NV133FHM-N52屏&#xff0c; 从NV133FHM-52的规格书上看到的timing信号是 &#xff0c;然后对比LG133规格书的timing图片感觉少了一些数据&#xff0c; &#xff0c;发现这样的问题…

全志F133A/B开发板

F133-A/B 开发板基于全志 F133-A/B 主芯片&#xff0c;它集成了 64 位处理器和 RISC CPU 指令体 系结构&#xff0c;主频高达 1.1GHz &#xff0c;接口高达二十多种&#xff0c;十分丰富。该开发板可用于性能评估、产 品方案预研以及嵌入式开发学习等用途。 芯片型号…

android蓝牙连接133问题的解决办法---(连接篇)

上一篇文章介绍了“蓝牙扫描”&#xff0c;今天来说一下android蓝牙连接过程中133的问题&#xff1a; 我们经常在网上看到一些答案说需要释放gatt资源&#xff0c;这种方式可以在一定程度上减少出现133的概率。个人发现的一个规律是&#xff1a;一般出现蓝牙连接133的问题&…

CTFshow php特性 web133

目录 源码思路题解0x00 解法一 curl带出0x01 解法二 总结 源码 <?php/* # -*- coding: utf-8 -*- # Author: Firebasky # Date: 2020-10-13 11:25:09 # Last Modified by: h1xa # Last Modified time: 2020-10-13 16:43:44*/error_reporting(0); highlight_file(__FIL…

Android蓝牙连接出现133的解决办法

代码片段&#xff1a;出现连接133的问题找了很久的解决办法&#xff0c;尝试各种亦然不行&#xff0c;最终的解决办法就是下面标红代码 if (status BluetoothGatt.GATT_SUCCESS) {if (newState gatt.STATE_CONNECTED) {Log.i(TAG, "onConnectionStateChange: --------&q…

C语言 一根长度为133m,(c语言)一根长度为133m的材料,需要截成长度为19m和23m的短料,求两种短料各截多少段时,剩余的材料多少...

满意答案 mdqpr 2017.01.05 采纳率&#xff1a;50% 等级&#xff1a;7 已帮助&#xff1a;811人 您好楼主 根据你的问题 如果我没有理解错的话 第一题问的是 求两种短料各截多少段时&#xff0c;剩余的材料最少&#xff1f; 那么代码如下&#xff1a; #include int main() …

PostGIS(2):PostGreSQL数据库空间扩展模块安装

正式开始解读PostGIS 3.1.10文档之前&#xff0c;我们还是先简单叙述一下如何安装PostGIS。 从引言篇已经了解到&#xff1a;PostGIS是对象关系型数据库PostGreSQL的一个拓展模块。既然如此&#xff0c;我们必须先安装PostGreSQL数据库&#xff08;详细教程可参考&#xff1a;P…