HashMap知识梳理

Posted 天津老狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap知识梳理相关的知识,希望对你有一定的参考价值。

HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。

当两个不同的键对象的hashcode相同时会发生什么? 它们会储存在同一个bucket位置的链表中。键对象的equals()方法用来找到键值对。

因为HashMap的好处非常多,我曾经在电子商务的应用中使用HashMap作为缓存。因为金融领域非常多的运用Java,也出于性能的考虑,我们会经常用到HashMap和ConcurrentHashMap。

当然还有很多问题可以深究,比如:

1、如果两个键的hashcode相同,你如何获取值对象?

2、如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?

3、你了解重新调整HashMap大小存在什么问题吗?

4、我们可以使用CocurrentHashMap来代替Hashtable吗

以上是关于HashMap知识梳理的主要内容,如果未能解决你的问题,请参考以下文章

知识体系梳理

Java的线程安全单例模式JVM内存结构等知识梳理

面试篇:Java的线程安全单例模式JVM内存结构等知识梳理

信息安全导论知识点梳理

日志相关知识梳理

Android学习—— Android 知识梳理