[JAVA数据结构]HashMap

news/2025/1/15 15:08:12/

目录

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…