Java源码详解零:HashMap介绍
文章目录
- Java详解(0):HashMap介绍,HashMap的迭代,HashMap的线程安全问题
- HashMap介绍
- HashMap的迭代
- HashMap的线程安全问题
Java详解(0):HashMap介绍,HashMap的迭代,HashMap的线程安全问题
本系列是Java源码分析,专栏地址:Java源码分析
HashMap介绍
HashMap是Java基于哈希表实现的Map接口。Map的意思是key-value的集合。
有几个注意事项:
- HashMap不能包含重复键
- HashMap允许null值和null键
- HashMap是一个无序集合,它不保证元素的顺序
- HashMap不是线程安全的
HashMap的使用示例如下:
import java.util.HashMap;
import java.util.Map;public class hello {public static void main(String[] args) {// Creating a HashMapMap<String, Integer> numberMapping = new HashMap<>();// Adding key-value pairs to a HashMapnumberMapping.put("One", 1);numberMapping.put("Two", 2);numberMapping.put("Three", 3);// Add a new key-value pair only if the key does not exist in the HashMap, or is mapped to `null`numberMapping.putIfAbsent("Four", 4);System.out.println(numberMapping);}
}
输出结果应该如下:
{One=1, Four=4, Two=2, Three=3}
HashMap常用的方法有:
- 检查HashMap是否为空| isEmpty()
- 检查HashMap的大小| size()
- 检查HashMap中是否存在给定的键| containsKey()
- 检查HashMap中是否存在给定值| containsValue()
- 在HashMap中获取与给定键关联的值 |get()
- 在HashMap中修改与给定键关联的值| put()
- 从HashMap中删除一个键 |remove(Object key)
- 仅当HashMap与给定值相关联时才从HashMap中删除密钥| remove(Object key, Object value)
- Map接口提供了检索键值对,键集和值集合的方法| entrySet() keySet() values()
HashMap的迭代
想要迭代一个HashMap有以下这些方法:
- 使用forEach
- 使用lambda表达式
- 使用iterator()
- 使用keySet()
HashMap的线程安全问题
HashMap不是线程安全的,
参考:
- HashMap线程安全问题
想要使用线程安全的HashMap,可以使用Collections.synchronizedMap
另一个办法就是在HashMap的get和put方法前加锁,也就是synchronized 关键字
下一篇文章:Java详解(2):HashMap源码分析
参考资料:
- Java HashMap Tutorial with Examples | CalliCoder
Java源码详解零:HashMap介绍相关推荐
- java源码详解——String类
java源码详解--String类目录: Java String 类 下面开始介绍主要方法: Java charAt() 方法 Java compareTo() 方法 int compareTo(St ...
- Java源码详解之NameValuePair
Java源码详解之NameValuePair NameValuePair仅仅是一个接口. 1. 类释义 /*** A name / value pair parameter used as an el ...
- Java源码详解二:HashMap源码分析--openjdk java 11源码
文章目录 HashMap.java介绍 1.HashMap的get和put操作平均时间复杂度和最坏时间复杂度 2.为什么链表长度超过8才转换为红黑树 3.红黑树中的节点如何排序 本系列是Java详解, ...
- Java源码详解六:ConcurrentHashMap源码分析--openjdk java 11源码
文章目录 注释 类的继承与实现 数据的存储 构造函数 哈希 put get 扩容 本系列是Java详解,专栏地址:Java源码分析 ConcurrentHashMap 官方文档:ConcurrentH ...
- Java源码详解五:ArrayList源码分析--openjdk java 11源码
文章目录 注释 类的继承与实现 构造函数 add操作 扩容函数 remove函数 subList函数 总结 本系列是Java详解,专栏地址:Java源码分析 ArrayList 官方文档:ArrayL ...
- Java源码详解三:Hashtable源码分析--openjdk java 11源码
文章目录 注释 哈希算法与映射 线程安全的实现方法 put 操作 get操作 本系列是Java详解,专栏地址:Java源码分析 Hashtable官方文档:Hashtable (Java Platfo ...
- Java源码详解四:String源码分析--openjdk java 11源码
文章目录 注释 类的继承 数据的存储 构造函数 charAt函数 equals函数 hashCode函数 indexOf函数 intern函数 本系列是Java详解,专栏地址:Java源码分析 Str ...
- Java集合框架源码详解系列(一)
写在前面:大家好!我是晴空๓.如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教.我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/.非常 ...
- java的String类源码详解
java的String类源码详解 类的定义 public final class Stringimplements java.io.Serializable, Comparable<String ...
最新文章
- HTML 表单(form) 使用详解
- php执行跟踪_PHP使用debug_backtrace方法跟踪调试代码调用详解
- WebApi的安全性及其解决方案
- jQuery中排除指定元素,同时选择剩下的所有元素
- 【纪中集训2019.3.26】动态半平面交
- mvc.net分页查询案例——实体层(HouseModel.cs)
- FAL风控培训|如何用一张图了解所有特征工程的套路
- 【转载】VC遍历文件夹下所有文件和文件夹
- windows查看GPU信息(nvidia-smi)
- 洛谷3004 [USACO10DEC]宝箱Treasure Chest
- python自动答题助手_头脑王者python答题助手
- Oracle定时任务使用
- 【音视频】使用DXGI实现多屏幕采集(4-2)
- Web-Security-Learning
- 王者荣耀英雄测试用例
- 综述:人工智能、数据科学、机器学习
- 【DeepLearning笔记】python规范书写
- 书籍 -- 《高性能MySQL》持续更新中(四)
- vbs恶搞程序(超初级)
- 如何搭建 Jenkins 自动化测试平台?
热门文章
- Git 删除已经提交的文件(Delete commits from a branch in Git)
- ISME: 北大吴晓磊组发现囊泡为细菌利用环境血红素提供全新途径
- 植物微生物组专题:研究方法、当前热点及未来方向
- 脱口秀《娶妻当娶女博士》续集《娶妻别娶女博士》北大生物女博士的自白,爆笑加泪点...
- 求求你使用Tab键好吗
- 生物信息9天速成班—成为团队中不可或缺的人
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA)
- R语言计算回归模型每个样本(观察、observation、sample)的杠杆值(leverage)实战:如果一个样本的预测变量比其他样本的预测变量值更极端,那么被认为具有很高的杠杆作用
- python可视化脉搏和血氧数据并通过阈值动态调整、动态可视化异常值
- java+构建+工具+Ant+Maven+Gradle