Java中的HashMap可以说是平时开发中最常用的数据结构之一了,经常使用的集合类还有ArrayList、HashSet,基本上用好HashMap、ArrayList、HashSet这三大集合类,大多数的业务场景就满足了,掌握这三大集合类也是作为一名Java程序员的基础能力。
平时开发大多数的业务场景都是CRUD,且数据量都很小,所以基本上不会有什么问题。那么还需要知道其底层实现原理吗?还需要知道这些集合类的数据结构吗?
当然需要,这很重要!这里就拿HashMap来具体说一说了解它的设计思想多么的重要!
HashMap的数据结构
HashMap的底层数据结构简单来说就是数组+链表+红黑树,这个大家都知道,面试也是高频面试题,用一张图来形容就是:
我觉得底层他更多的是思想,理解思想有利于更快的学习其他知识,另一个对于排错也会有容易一些!
看源码的意义
看源码只是一种方法、手段,而不是目的。我也曾经给自己制定过“阅读xxx源码”的目标,现在看起来真的很蠢,一点不smart(specific、measurable、attainable、relevant、time-bound)。只有搞清楚了阅读代码的目标,才能有的放矢,抓住重点,高效达成任务。
看源码的意义总结起来包含但不限于以下几点:
第一:解决问题(BUG)
只要是代码,就会有bug,只是说bug的多与少、深与浅罢了。现在大家都喜欢发布、使用开源项目,不同的开源项目社区成熟度、代码质量又会有较大的差异,遇到bug就不足为奇了。
内卷,竞争的人多了,提高面试标准。
hashmap 现在确实是面试最热门的问题之一了。
我个人觉得理解底层有这么作用吧
1、首先对底层知识的了解和掌握,让我们平时在开发写代码时能写出较好的代码,其次可能会使出现bug率降低,再者即使出现bug,懂得底层知识的人可能在更短的时间或有效的去解决问题。
你想,老板肯定是更喜欢做事好且解决问题能力强的人嘛。
2、懂得更多底层知识,有助于我们平时在写代码时能借鉴别人好的思想。可以把别人好的思想运用到自己实际项目中,并灵活运用。
还是有些用的,虽然意义不大。比如大小分别为1000和100万的map,根据键取值哪个更快?
知道说明你看了,或者背诵了。
知其所以然是技术人员进步的基本,想要走得远就要比别人有优势。不然别人怎么信服你。
问这些问题还不如来个实景监测,就公司正在进行的项目,问个技术点,问个报表SQL,问个实体分析表设计,比这强多了。
哈希表 是程序中很重要的数据结构 看你能不能想起来这种秋裤结构的优势
hashmap原理主要考察你是否真的对java有过深入了解!是否有学习的精神!是否真的和你简历相符!最重要的是hashmap在大数据也有很多场景!你要转入大数据怎么能不学!还是那句话,垃圾和金子总要去甄别