集合的面试题


一、collection和collections区别是什么?

public interface Collection extends Iterable 从这里可以看出collection是一个接口。
代码如下(示例):

public interface Collection<E> extends Iterable<E> {
    
    
	int size();
	boolean isEmpty();
	boolean add(E e);
	boolean remove(Object o);
}

而collections是一个实现类,而且是一个工具类。

二、Vector,ArrayList,LinkedList三者的区别?

Vector:Vector类实现了可扩展的对象数组。 像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以根据需要增长或缩小,以适应在创建Vector之后添加和删除项目。
ArrayList:底层有数组构成,索引,有序,可重复。查询快,增删慢。
LinkedList:底层由链表,指针,有序,可重复。查询慢,增删快。

三、HashMap和HashTable的区别?

HashMap:数组最原始的长度为16
在JDK1.8之前HashMap是由数组加链表构成
在JDK1.8之后HashMap是由数组加链表/红黑树构成
在这里插入图片描述
先将数据转化成hash值,然后将hash值%16的值对然后对比数组上的值,如果该位置没有值,就直接将值存进去。如果hash值相同,然后比较内容是否相等。如果相等,就不存储,不相等,就存储在下面的链表中,依次存储,hash表的存储大概过程就是这样。

HashTable:数组最原始的长度为11,而且底层是由数组加链表构成,图跟上面一样。

四、HashSet与TreeSet的相同点与不同点?

HashSet:是由hashMap实现;
TreeSet:底层由TreeMap实现,TreeMap底层由HashMap实现。
相同点:就是底层都是HashMap实现。
不同点:HashSet无序,不可重复;TreeSet有序,不可重复,原因就是它实现SortedSet(他是一个接口,自然排序的接口)。

五、LinkedHashSet和LinkedHashMap的区别?

LinkedHashSet:哈希表和链表实现的Set接口,具有可预测的迭代次序。 该实现与HashSet不同之处在于它保持双向链接列表的所有条目。
LinkedHashMap:哈希表和链表实现的Map接口,具有可预测的迭代顺序。 该实现与HashMap不同之处在于它保持双向链接列表的所有条目。


Guess you like

Origin blog.csdn.net/m0_51064043/article/details/121370524