Java面试中,如何解答Map相关高频问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3228个文字,预计阅读时间需要13分钟。
您好,面试官 | 您是否用过Java的Map? | 用过HashMap、LinkedHashMap、TreeMap、ConCurrentHashMap等吗? | 一般涉及到键值对的存取,我们首先想到的是HashMap | 如果需要根据Key排序实现存储,可以使用TreeMap
你好,面试官 | 你拿Java Map考验老干部?
你用过哪些Map?
HashMap、 LinkedHashMap、TreeMap、ConCurrentHashMap
- 一般涉及到键值对的存取,我们第一时间想到的就是HashMap
- 如果需要根据Key顺序实现存储键值对,TreeMap较为合适,TreeMap底层基于红黑树实现,键值都不能为null,时间复杂度O(logn)。
- LinkedHashMap是通过为键值对维护一个双向链表,可以用在模拟LRU缓存淘汰策略上。
- ConCurrentHashMap是基于分段锁和CAS实现的支持并发的线程安全Map。
对 Hash 算法的理解?
简单来说,其实它就是一种将任意长度的输入转为为固定长度的输出的映射规则。
比如说我用过的有md5、sha、sm3。
由于任意长度—>固定长度,随着 hash 次数增加,后面必定出现 哈希冲突。
本文共计3228个文字,预计阅读时间需要13分钟。
您好,面试官 | 您是否用过Java的Map? | 用过HashMap、LinkedHashMap、TreeMap、ConCurrentHashMap等吗? | 一般涉及到键值对的存取,我们首先想到的是HashMap | 如果需要根据Key排序实现存储,可以使用TreeMap
你好,面试官 | 你拿Java Map考验老干部?
你用过哪些Map?
HashMap、 LinkedHashMap、TreeMap、ConCurrentHashMap
- 一般涉及到键值对的存取,我们第一时间想到的就是HashMap
- 如果需要根据Key顺序实现存储键值对,TreeMap较为合适,TreeMap底层基于红黑树实现,键值都不能为null,时间复杂度O(logn)。
- LinkedHashMap是通过为键值对维护一个双向链表,可以用在模拟LRU缓存淘汰策略上。
- ConCurrentHashMap是基于分段锁和CAS实现的支持并发的线程安全Map。
对 Hash 算法的理解?
简单来说,其实它就是一种将任意长度的输入转为为固定长度的输出的映射规则。
比如说我用过的有md5、sha、sm3。
由于任意长度—>固定长度,随着 hash 次数增加,后面必定出现 哈希冲突。

