集合部分面试题

1.Collection 和 Collections 有什么区别?

Collection 是集合类的顶级接口。直接继承的有List和Set
Collections 是集合类的工具类。提供了一系列的静态方法,用于对集合进行排序、搜索以及线程安全等各种操作

2.List、Set、Map之间的区别是什么?

1.List和Set是继承与Collection接口的

2.常用实现类
2.1.List的常用实现类AbstractList其常用子类有ArrayList、LinkedList、Vector
2.2.Set的常用实现类AbstractSet其常用子类有HashSet、LindedSet、TreeSet
2.3.Map的常用类有HashMap和HashTable

3.List的元素是可以重复的,Set和Map的元素是不可重复的
(我是这么理解的List是存值的,Set是存key的,Map是Key和value都存。值是可重复的,而key是不可重复的)

4.List是有序的,Set和Map是无序的但其实是因为由HashCode决定

5.Vector和HashTable是线程安全的

3.HashMap 和 Hashtable 有什么区别?

1.HashMap去掉了HashTable的 contains 方法,但是加上了 containsValue 和 containsKey 方法

2.HashTable是同步线程安全的,而HashMap是非同步线程不安全的所以效率要比前者高。

3.HashMap是可以允许空值的,而HashTable不允许

4.如何决定使用 HashMap 还是 TreeMap?

对于插入、删除和查找元素使用HashMap会更好点
如果需要对一个有序的Key集合进行遍历使用TreeMap会更好点

5.说一下 HashMap 的实现原理?

在java中最基本的结构就是两种,一个是数组,另一个则是模拟指针,所有的数据结构都可以用这两种基本结构来进行构造。
HashMap实际上就是一个链表散列的数据结构,即数组和链表的结合体

当我们进行Put元素时,首先根据key的HashCode重新计算hash值,根据hash值得到这个元素在数组中的下标,如果该位置上已经有值了,那么在这个位置上的值将以链表的形式存放,新加入的放在链头,最先加的则是在链尾。如果该位置上没有则直接放在该数组位置

1.8之后对HashMap进行了优化,当链表中节点数据超过8个,该链表会转换为红黑树来提高查询效率

说一下 HashSet 的实现原理?

HashSet底层是由HashMap实现的,值放在Map的key上,Map的值统一为PRESENT

ArrayList 和 LinkedList 的区别是什么?

ArrayList的底层数据结构是数组,支持随机访问。
LinkedList的底层数据结构为双向链表,不支持随机访问,使用下标访问一个元素

ArrayList 和 Vector 的区别是什么?

## Vector是同步线程安全的,而ArrayLIst不是 ArrayLIst会更通用,因为可以使用Collections工具类轻易地获取同步列表和只读列表

未完待续。。。

只是加深自己的印象才写的
抄袭此作者 https://zhuanlan.zhihu.com/p/64147696/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值