1 Star 0 Fork 31

tankai / Ebooks

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2022年最全Java集合面试题附答案解析大汇总.md 8.51 KB
一键复制 编辑 原始数据 按行查看 历史

2022年最全Java集合面试题附答案解析大汇总

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

Java 集合

题1:Java 集合类框架的基本接口有哪些?

集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。

Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:

Collection:代表一组对象,每一个对象都是它的子元素。

Set:不包含重复元素的Collection。

List:有顺序的collection,并且可以包含重复元素。

Map:可以把键(key)映射到值(value)的对象,键不能重复。

题2:Java 中两个键 hashCode 相等,如何获取对象?

HashCode相同,通过equals比较内容获取值对象。

题3:List、Set、Map 三者有什么区别?

List

存储数据允许不唯一集合,可以有多个元素引用相同的对象且是有序的对象。

Set

不允许重复的集合,不存在多个元素引用相同的对象。

Map

使用键值对存储方式。Map维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,比如Key是String类型,但也可以是任何对象。

题4:Iterater 和 ListIterator 都有哪些区别?

1)Iterator可以遍历Set和List集合,而ListIterator只能遍历List集合。

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

3)ListIterator接口使用nextIndex()和previousIndex()方法可以获取当前的索引位置,而Iterator不具备此功能。

4)ListIterator和Iterator都可实现删除对象,但是ListIterator接口使用set()方法可以实现对象的修改,而Iierator仅能遍历,不能修改。

题5:什么是 HashMap?

HashMap实现了Map接口,Map接口对键值对进行映射。

Map中不允许重复的键。Map接口有两个基本的实现,HashMap和TreeMap。TreeMap保存了对象的排列次序,而HashMap则不能。HashMap允许键和值为null。

HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。

public Object put(Object Key,Object value);

该方法用来将元素添加到map中。

题6:Java 中什么是 fail-fast?

fail-fast(快速失败)是Java对java.util包下的所有集合类的是一种错误检测机制。

题7:Java 中常用的集合有哪些?

Map接口和Collection接口是所有集合框架的父接口

Collection接口的子接口包括:Set接口和List接口。

Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。

Map接口的实现类主要有:HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的key,但是可以包含相同的value。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等

List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等

Iterator所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:

hasNext()是否还有下一个元素

next()返回下一个元素

remove()删除当前元素

题8:Java 中如何查找单链表中的中间结点?

分析思路

设置两个指针first和second,两个指针同时向前走,second指针每次走两步,first指针每次走一步,直到second指针走到最后一个结点时,此时first指针所指的结点就是中间结点。

注意链表为空,链表结点个数为1和2的情况下,时间复杂度为O(n)。

// 方法:查找链表的中间结点
public Node findMidNode(Node head) {

	if (head == null) {
		return null;
	}

	Node first = head;
	Node second = head;
	// 每次移动时,让second结点移动两位,first结点移动一位
	while (second != null && second.next != null) {
		first = first.next;
		second = second.next.next;
	}

	// 直到second结点移动到null时,此时first指针指向的位置就是中间结点的位置
	return first;
}

通过上述代码可以看出,当n为偶数时,得到的中间结点是第n/2+1个结点。比如链表有6个节点时,得到的是第4个节点。

题9:Iterator 和 Enumeration 接口有哪些区别?

Iterator是JDK 1.2版本中添加的接口,支持HashMap、ArrayList等集合遍历接口。Iterator是支持fail-fast机制,当多个线程对同一个集合的内容进行操作时可能产生fail-fast事件。

Iterator有3个方法接口,Iterator能读取集合数据且可以对数据进行删除操作,而Enumeration只有2个方法接口,通过Enumeration只能读取集合的数据,而不能对数据进行修改。

Enumeration接口的处理性能是Iterator的两倍且内存使用也更少,但是Iterator接口比Enumeration要安全很多,主要是因为其他线程不能够修改正在被iterator遍历的集合中的对象。同时,Iterator允许调用者删除底层集合里面的元素,这对Enumeration接口来说是不可能的。

迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者从集合中移除元素,而Enumeration不能实现。

Enumeration是JDK 1.0版本中添加的接口。Enumeration的方法接口为Vector、Hashtable等类提供了遍历接口。Enumeration本身不支持同步,而在Vector、Hashtable实现Enumeration时添加了同步。

题10:说一说 HashMap 的特性?

1、HashMap存储键值对实现快速存取,允许为null。key值不可重复,若key值重复则覆盖。

2、非同步,线程不安全。

3、底层是hash表,不保证有序,比如插入的顺序。

题11:vector-和-arraylist-有什么区别和联系

题12:hashmap-长度为什么是2的幂次方

题13:collection-和-collections-有什么区别

题14:hashmap-参数-loadfacto-作用是什么

题15:java-中-unsupportedoperationexception-是什么

题16:java-中-list-和-array-如何相互转换

题17:说一说-hashset的使用和原理

题18:hashmap-为什么多线程会导致死循环

题19:hashset-和-hashmap-有什么区别

题20:有10-亿个-url每个-url-大小小于-56b要求去重内存只给你4g

题21:java-迭代器-iterator-是什么

题22:java-中常用的并发集合有哪些

题23:java-中如何合并两个有序单链表后依然有序

题24:arraylist-和-copyonwritearraylist-有什么区别

题25:fail-fast-与-fail-safe-有什么区别

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/tankkai/ebooks.git
git@gitee.com:tankkai/ebooks.git
tankkai
ebooks
Ebooks
master

搜索帮助