Java集合

发布时间:2024年01月19日

1.Java集合必须要背的两张图

由于我不想把一篇文章的篇幅搞的过于长,而且关于Map类是超级重点,我决定把Map放在下一篇文章讲,这一篇文章我先来解读Collection类。

2.为什么要引出集合呢?有数组不就够了吗?集合和数组有什么区别呢?

3.Collection集合有哪些方法?为什么要定义这么多方法?

答:Collection接口下面还有两个子接口List和Set,它们都会继承Collection接口定义的方法。

Collection接口是Java集合框架中最基本的接口,它定义了一组通用的方法,用于操作和管理集合中的元素。这些方法包括添加元素,删除元素,判断集合是否为空,获取集合大小,判断集合中是否包含某个元素,遍历集合等。所以说要定义这么多的方法。

4.Collection接口下的list接口和set接口有什么区别?

5.关于List接口的实现类

list本身是一个接口,如果想要使用该接口,可以使用该接口的实现类来完成,list接口的重点实现类有3个,分别是ArrayList?、LinkedList?、Vector

(1)ArrayList:? ?底层数据结构是数组,查询快,增删慢,效率高,线程不安全。

扩容机制:ArrayList中维护了一个Object类型的数组elementData。当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData为10,如果需要再次扩容,则扩容elementData为1.5倍。

(2)LinkedList :底层数据结构是链表,查询慢,增删快,效率高,线程不安全。

(3)Vector:? ? ? ?底层数据结构是数组,查询快,增删慢,效率低,线程安全。

扩容机制:Vector中维护了一个Object类型的数组elementData。当创建Vector对象时,如果使用哪个的是无参构造器,则默认elementData容量为10,如果需要再次扩容,就扩容elementData为2倍。如果指定大小,则每次直接按2倍扩容。

6.关于HashSet 与 LinkedHashSet的底层数据结构

答:HashSet的底层是HashMap,HashMap的底层是(数组+链表+红黑树)

LinkedHashSet是HashSet的子类,LinkedHashSet的底层是一个LinkedHashMap,底层维护了一个(数组+双向链表)

7.小结

ArrayList和Vector 是重点。一般会问 ArrayList 和 Vector 的区别,底层数据结构区别,扩容区别,是否线程安全等等。

HashSet 与 LinkedHashSet大概了解吧,相对来说,不那么重点,简单了解下底层数据结构实现以及一些应用场景就行,一般面试不会问的很细。另外就是 HashSet 的底层,其实维护了一个 HashMap。

文章来源:https://blog.csdn.net/qq_54432917/article/details/135695288
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。