集合类主要分两大类:Collection 和 Map
集合:用来存储数据时,数据个数不确定,无法使用数组,便用到java容器---集合。
和数组不同之处:
数组存储的是同一类型的元素,可以存储基本数据类型
集合存储的是对象,对象可以不一致
Collection接口(list、set,queue)
Collection是所有集合类的根接口;
Collections是提供集合操作的工具类;list
有序,可重复
Arraylist: 长度可变,原理为创建新数组+赋值数组,查询速度快,增删改查慢,不是线程安全。
Linkedlist: 基于双循环链表实现,不同步。查询慢,增删速度快。实现queue接口,因此可以实现堆栈,队列。
Vector: 可增长的数组结构,同步,效率低。
Arraylist和Vector:
ArrayList线程不安全,Vector线程安全(add使用了synchronized)。
都是基于数组,都采取线性连续存储,当存储空间不足时,vector请求扩容其大小2倍空间,arraylist请求1.5倍。
set
无序,不可重复
HashSet: