大厂java面试题——集合篇(3)

导读:本篇文章讲解 大厂java面试题——集合篇(3),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

💴哈喽,大家好丫,你们的小郭子又来啦 ~

🍣1. Iterator 和 ListIterator 有什么区别?

🍣2. Iterator 和 Enumeration 接口的区别?

🍣3. fail-fast 与 fail-safe 有什么区别?

🍣4. Collection 和 Collections 有什么区别?

🍣5. HashMap的hash算法为什么使用异或?

🍣6.  加载因子可以调整吗?

🍣 7. 为什么HashMap的初始容量是16?

🍣8.为什么树化之后,当长度减至6的时候,还要进行反树化?



💴哈喽,大家好丫,你们的小郭子又来啦 ~

今天我们继续聊一聊java面试中的【集合问题(3)】,

话不多说,直接上干货,嘻嘻嘻 ~

                                大厂java面试题——集合篇(3)大厂java面试题——集合篇(3)大厂java面试题——集合篇(3)

🍣1. Iterator 和 ListIterator 有什么区别?

Iterator 可用来遍历 Set 和 List 集合,但是 ListIterator 只能用来遍历 List。Iterator 对集合只能是前向遍历,ListIterator 既可以前向也可以后向。

ListIterator 实现了 Iterator 接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引等等。

🍣2. Iterator 和 Enumeration 接口的区别?

  1. Iterator 的方法名比 Enumeration 更科学
  2. Iterator 有 fail-fast 机制,比 Enumeration 更安全
  3. Iterator 能够删除元素,Enumeration 并不能删除元素。

🍣3. fail-fast 与 fail-safe 有什么区别?

Iterator 的 fail-fast 属性与当前的集合共同起作用,因此它不会受到集合中任何改动的影响。Java.util 包中的所有集合类都被设计为 fail-fast 的,而 java.util.concurrent 中的集合类都为 fail-safe 的。

当检测到正在遍历的集合的结构被改变时,fail-fast 迭代器抛出ConcurrentModificationException,而 fail-safe 迭代器从不抛出 ConcurrentModificationException。

🍣4. Collection 和 Collections 有什么区别?

Collection:是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素。它的直接继承接口有 List,Set 和 Queue。

Collections:是不属于 Java 的集合框架的,它是集合类的一个工具类/帮助类。此类不能被实例化, 服务于 Java 的 Collection 框架。它包含有关集合操作的静态多态方法,实现对各种集合的搜索、排序、线程安全等操作。

🍣5. HashMap的hash算法为什么使用异或?

异或运算能更好的保留各部分的特征,如果采用&运算计算出来的值会向0靠拢,采用 | 运算计算出来的值会向1靠拢。

🍣6.  加载因子可以调整吗?

可以调整,hashmap运行用户输入一个加载因子

大厂java面试题——集合篇(3)

🍣 7. 为什么HashMap的初始容量是16?

我们知道扩容是个耗时的过程,有大量链表操作,16作为一个折中的值,即不会存入极少的内容就扩容,也不会在加入大量数据而扩容太多次。16扩容3次就达到128的长度。

其实还有一个很重要的地方,16是2的4次方,我们在看HashMap的源码时,可以看到初始容量的定义方式如下:

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;

🍣8.为什么树化之后,当长度减至6的时候,还要进行反树化?

  • 长度为6时我们查询次数是6,而红黑树是3次,但是消耗了一倍的内存空间,所以我们认为,转换回链表是有必要的。
  • 维护一颗红黑树比维护一个链表要复杂,红黑树有一些左旋右旋等操作来维护顺序,而链表只有一个插入操作,不考虑顺序,所以链表的内存开销和耗时在数据少的情况下是更优的选择。

💴好啦,今天的分享到这里就结束啦 ~

💴觉得我分享的文章不错的话,可以关注一下哦,嘻嘻嘻

                        大厂java面试题——集合篇(3)

                                

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73255.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!