Java集合面试题汇总篇 (13)

Comparable 接口的实现是在类的内部(如 String、Integer已经实现了 Comparable 接口,自己就可以完成比较大小操作),Comparator 接口的实现是在类的外部(可以理解为一个是自已完成比较,一个是外部程序实现比较)

实现 Comparable 接口要重写 compareTo 方法, 在 compareTo 方法里面实现比较。一个已经实现Comparable 的类的对象或数据,可以通过 Collections.sort(list) 或者 Arrays.sort(arr)实现排序。通过 Collections.sort(list,Collections.reverseOrder()) 对list进行倒序排列。

Java集合面试题汇总篇

实现Comparator需要重写 compare 方法

Java集合面试题汇总篇

HashSet

HashSet是用来存储没有重复元素的集合类,并且它是无序的。HashSet 内部实现是基于 HashMap ,实现了 Set 接口。

从 HahSet 提供的构造器可以看出,除了最后一个 HashSet 的构造方法外,其他所有内部就是去创建一个 Hashap 。没有其他的操作。而最后一个构造方法不是 public 的,所以不对外公开。

Java集合面试题汇总篇

HashSet如何检查重复

HashSet的底层其实就是HashMap,只不过我们HashSet是实现了Set接口并且把数据作为K值,而V值一直使用一个相同的虚值来保存,HashMap的K值本身就不允许重复,并且在HashMap中如果K/V相同时,会用新的V覆盖掉旧的V,然后返回旧的V。

Java集合面试题汇总篇

Iterater 和 ListIterator 之间有什么区别?

我们可以使用Iterator来遍历Set和List集合,而ListIterator只能遍历List

ListIterator有add方法,可以向List中添加对象,而Iterator不能

ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator不可以

ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能

都可实现删除操作,但是 ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改

Java集合面试题汇总篇

参考与感谢

所有内容都是基于源码阅读和各种大佬之前总结的知识整理而来,输入并输出,奥利给。

https://www.javatpoint.com/java-arraylist

https://www.runoob.com/java/java-collections.html

https://www.javazhiyin.com/21717.html

https://yuqirong.me/2018/01/31/LinkedList内部原理解析/

https://youzhixueyuan.com/the-underlying-structure-and-principle-of-hashmap.html

《HashMap源码详细分析》源码详细分析-JDK1-8/

《ConcurrentHashMap1.7源码分析》https://www.cnblogs.com/chengxiao/p/6842045.html

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyssfz.html