在写这篇文之前呢,我先说说我的感受。今年我从公司离职之后啊,参加了多家面试,面试题可以说是好多好多。但那是呢不变的还是那些基础,也就是 javaSE的知识。我见到的最常见面试题 就是关于hash方面的知识。map下有两个实现类(hashmap、hashtable),我也看到有人再说:"作为一个程序员, 真的有必要学习这些底层原理吗? 我会用了不就行了吗? 为什么面试者喜欢问这么细节的东西呢?"
是啊,我最开始的时候 我也没有那么去强调到底为什么,没有想那么多为什么。只是在开发中我就直截了当的new出来一个,调用一下put方法,存入key,value 就完了,
很少人会用到像
public HashMap(int initialCapacity, float loadFactor)
这样的构造函数,更不会去调整那个loadFactor,也不会关心HashMap的容量为什么是2的幂。
为何要学习Hashmap底层原理
HashMap 提供了一个绝佳的范例,展示了编程中对于数据结构/算法的应用,例如位运算,Hash,数组,链表,红黑树等。我一直强调数据结构对于程序员逻辑思维能力的训练,学习下HashMap的实现原理,绝对是有好处的,但是这个好处显得比较“虚”,有没有更现实一点的意义?