体系
Collection接口List接口:按照顺序插入数据,可重复ArrayList实现类:LinkedList实现类:
Set接口:不可重复的集合HashSet实现类
Queue接口:队列LinkedList实现类ArrayBlockingQueue实现类PriorityQueue实现类
Map接口HashMap实现类Hashtable实现类
ArrayList
底层通过数组实现,可理解为扩容数组
ArrayList的插入,可能涉及数组元素的移动、扩容
创建ArrayList对象
不传递类型参数和长度参数,直接构造:ArrayList list = new ArrayList();。此时list可以包含各种类型的数据,底层是长度为0的数组

可以传入长度参数,指定数组初始长度:ArrayList list = new ArrayList(10);
可以传入另一个同类型集合作为参数
⚠️ArrayList扩容机制:无参构造时,第一次add时,底层创建长度为10的数组,以后每当不够时,就创建长度为1.5倍的新数组,再将数据搬到新数组,添加,原来的引用作废
常用方法
add(e):末端添加数据eadd(i, e):索引i位置增加元素eaddAll(Collection c):把集合c中的元素全加进调用的对象size():集合中元素个数get(i):获取索引i位置处的元素set(i, e):设置索引i处元素为e(有返回值,是修改前的值remove(i):删除索引i处的元素(有返回值,是删除的元素值- 可用
enhance for遍历 indexOf(e):返回e的第一个索引,若不存在,返回-1lastIndexOf(e):返回e的最后一个索引,若不存在,返回-1boolean contains(e):是否存在eboolean isEmpty():ture表示集合空clear():清空toArray():把集合变成数组类型clone():复制新对象

LinkedList
底层是链表实现
创建LinkedList对象
和ArrayList类似,不再赘述
常用方法
添加元素
add(e):在末端添加元素eadd(i, e):在索引i位置添加元素epop(e):在链表最前面添加元素eaddFirst(e):头插eaddLast(e):尾插eaddAll(Collection c):将c中的数据都添加
获取元素
get(i):获取索引i位置处的元素getFirst():获取第一个元素getLast():获取最后一个元素- 可用
enhance for按顺序遍历 contains(e):是否包含元素eindexOf(e):获取e的第一个索引lastIndexOf(e):获取e的最后一个索引
修改元素
set(i, e):将索引i的元素设置为e
删除元素
remove():默认删除第一个元素pop():弹出第一个元素remove(i):删除索引i位置remove(e):删除元素eremoveFirst()removeLast()clear():清空
其他
size():获取长度isEmpty()“:是否为空
补充 比较器
ArrayList和LinkedList有排序方法sort(),对于一维数组可以实现默认升序
我们可以自己指定排序方式,需要传入比较器类对象,这个类必须实现Comparator接口,重写compare方法
compare方法需要指定类型参数,返回一个int,传入Object对象o1和o2。返回0表示两个对象值“相等”;返回正数,说明o1>o2,那么o1要排到o2后面,实际就是降序;返回负数,说明o1<o2,o1排在o2前面,就是升序

HashSet
特点:无序存储,保证集合中元素唯一,不重复
底层是数组+链表,元素加入HashSet时,通过哈希算法计算应该存储的位置。采用一定方法解决冲突(数组+链表,拉链法)
哈希值的计算,涉及到equals方法和hashCode方法
常用方法
创建
Set<Integer> set = new HashSet<Integer>();可以不指定类型参数,存储任意类型
添加元素
add(e):将元素e添加addAll(Collection c):将集合c里面的元素添加进去
访问元素
enhance for遍历
删除元素
remove(e):删除元素eclear():清空
其他
isEmpty():判断集合是否为空contains(e):判断集合是否包含eclone():克隆对象
Queue
实现类包括LinkedList、ArrayBlockingQueue和PriorityQueue
ArrayBlockingQueue底层是数组,构造时需要传入参数,指定长度。队列满无法再入队
LinkedList是链队
PriorityQueue是优先队列,小顶堆

















![[创业之路-48] :动态股权机制 -3- 静态股权分配 VS 动态股权分配](https://img-blog.csdnimg.cn/img_convert/f25e6264d8204bcd4951ef85692c204f.jpeg)

