【Java集合】小白科普:10分钟讲解Java集合

本文介绍了Java集合框架中的Collection接口、List接口(如ArrayList、LinkedList)和Set接口(如HashSet、LinkedHashSet)的区别,重点讲解了它们的数据结构、方法、扩容机制和线程安全性。特别强调了ArrayList和Vector在实际应用中的重要性。
摘要由CSDN通过智能技术生成

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值