集合概念
什么是集合?
集合:集合是一组用来存放数据对象的容器。
特点:存放的数据是对象。
对比数组:
1、数组初始化后,其长度不可以再被改变,也就是说数组存放数据的个数是事先确定的。
2、数组中对于插入元素和删除元素的操作是很繁琐的,因为涉及到了数组元素的移位操作。
3、数组存放数据的方式是有序的,可重复的,而对于那些需要去掉重复数据的需求就无法满足了。
但是对于数组以上的三点缺陷,在集合中就得到了很好的解决。
集合的分类
集合可分为两大类:单例集合和双例集合。
什么是单列集合?
单例集合:每次以单个对象的形式将数据存放到集合中。
什么是双列集合?
双列集合:每次以两个对象为一组的形式将数据存放到集合中,用来存储键值对对象,其中键具有唯一性,而值是可以重复的。
集合分类示意图
简介
Collection: 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
常用的三种List集合
ArrayList集合:
ArrayList的底层结构:
1.该集合是一个数组,根据下标定位元素快,增加、删除操作需要数组的移位,第一次创建集合并添加一个元素时,底层就会创建一个大小默认为10的数组,
3.该集合的默认长度就为10,
4.该集合查询的效率高。
5.如果新增超过10,那么他会自动扩展1.5倍。
6.该集合的线程不安全。
LinkedListLinkedList的底层结构:
1.是一个双向链表,可以充分利用碎片化空间进行存储,查找,修改数据及删除数据,因为都要遍历整个链表。
2.此集合为链表集合,该集合修改,删除数据效率高。
3.该集合的线程不安全。
vector
vector的底层结构:面试题;vector与ArrayList的区别?
1、底层的扩容机制不同:vector扩容为原数组的两倍,而ArrayList扩容为原数组的1.5倍。
2、内部实现机制不同:vector类的操作方法采用的都是synchronize同步处理,线程安全但效率低。ArrayList类的操作方法却并没有采用synchronize同步处理,线程不安全但效率高。
3.该集合的线程安全。