20个不容你错过的Java集合面试问题和答案

时间:2019-07-15 来源:www.marcelkuo.com

博e百娱乐城官方网

Java Collection Framework是Java编程语言的基础,也是Java访谈中的重要知识点。在这里,我列出了一些关于Java集合的重要问题和答案。

1.什么是Java Collection Framework?说一下收集框架的一些优点?

c53102490b9d47dd8f376647e0b92ac4

2.泛型在集合框架中有哪些优点?

39e4d8b35ede4f708d14788bc457e55c

3. Java Collection Framework的基本接口是什么?

a9dc99bee89a427b8a680958ed5f3632

4.为什么Collection不能从Cloneable和Serializable接口继承?

8c34c0e4a4724e079d3b549611ad4d73

5.为什么Map接口不继承Collection接口?

613390878b9f4f9cbe75f709a1fbeeb0

ed996a9affe64777bedbb61037815815

6.什么是迭代器?

08529ebf79cf40a4bfcec52aeb9c4075

7. Enumeration和Iterator接口有什么区别?

13a2dbf4fbb24f84b3221798c8a93083

8.为什么没有办法像Iterator.add()方法那样向集合中添加元素?

fc08df0a34d24aa19d3010820914a81a

9.为什么迭代器没有办法直接获取下一个元素而不必移动光标?

a0e052d1141a4ab186e80fb8781f4324

10. Iteterer和ListIterator有什么区别?

fd3ad03ef1024bafaaa09c089a5023aa

11.遍历列表的不同方法有哪些?

124a021df0d14c05a894907e76e0b49b

使用迭代器更加线程安全,因为它确保在更改当前遍历的集合元素时抛出ConcurrentModificationException。

12.使用iterator fail-fast属性你有什么理解?

b9e64b977cff4d1da9a4d13d815e80ec

42dba350ab594792a24b0f5a611c5404

13.故障快速和故障安全有什么区别?

6b7ac610d142452a9164644441066290

14.迭代集合时如何避免ConcurrentModificationException?

33a7315b9706477fa3a5f3ab978c9fdd

15.为什么没有Iterator接口的具体实现?

5f641341f96c4e65854c6bb112f3fa3a

16.什么是UnsupportedOperationException?

b602a030cbad4452b0f31a4e6b8facb9

17. HashMap如何在Java中工作?

be20699af47c4268af8bc0e69689d092

18. hashCode()和equals()方法的重要性是什么?

06e95ad3056f4cf09daf7cc4647afb2a

94139889a5f244c98fe0c8da14ed4dd6

19.我们可以使用任何类作为地图的关键吗?

我们可以使用任何类作为Map的键,但在使用它们之前,我们需要考虑以下内容:

(1)如果类重写了equals()方法,它还应该覆盖hashCode()方法。

(2)类的所有实例都需要遵循与equals()和hashCode()相关的规则。请参阅前面提到的规则。

(3)如果一个类不使用equals(),则不应在hashCode()中使用它。

(4)用户定义的键类的最佳实践是使它们不可变,以便可以缓存hashCode()值以获得更好的性能。不可变类还确保hashCode()和equals()在将来不会改变,这解决了静音问题。

例如,我有一个我在HashMap中使用的类MyKey。

c9421c55dc734bb0ad44b6f0b204b12d

这就是为什么String和Integer被广泛用作HashMap的键。

20. Map界面提供了哪些不同的集合视图?

Map接口提供了三个集合视图:

(1)Set keyset():返回地图中包含的所有键的Set视图。集合由地图支持,对地图的更改反映在集合中,反之亦然。当迭代器遍历集合时,如果修改了映射(除了迭代器自己的删除),迭代器的结果将变为未定义。集合支持通过Iterator的Remove,Set.remove,removeAll,retainAll和clear操作删除元素,从地图中删除相应的地图。它不支持add和addAll操作。

(2)Collection values():返回地图中包含的所有值的Collection视图。地图支持此集合,地图的更改将反映在集合中,反之亦然。当迭代器遍历集合时,如果修改了映射(除了迭代器自己的删除),迭代器的结果将变为未定义。集合支持通过Iterator的Remove,Set.remove,removeAll,retainAll和clear操作删除元素,从地图中删除相应的地图。它不支持add和addAll操作。

(3)设置entrySet():返回地图时钟中包含的所有地图的集合视图。地图支持此集合,地图的更改将反映在集合中,反之亦然。当迭代器遍历集合时,如果映射被修改(迭代器自己的删除和迭代器返回的setValue除外),迭代器的结果将变为未定义。集合支持通过Iterator的Remove,Set.remove,removeAll,retainAll和clear操作删除元素,从地图中删除相应的地图。它不支持add和addAll操作。

最后,发送好处,加上组获取组号:798891710获得Java工程,高性能和分布式,高性能,高架构,性能调优,Spring,MyBatis,Netty源代码分析和许多其他高级知识相关视频材料先进的干货,以及弹簧和虚拟机等书籍的扫描版本,以及更多的面试问题,等着你来