文章目录
ArrayList数组
1.数组实现,快速随机访问
2.元素没间隔,插入删除需复制移动旧,慢
3.适合随机查找和遍历,不适合插入和删除
arrays.sort用什么排序
数量非常小的情况下(就像上面说到的,少于47的),插入排序等可能会比快速排序更快。 所以数组少于47的会进入插入排序。
快排数据越无序越快(加入随机化后基本不会退化),平均常数最小,不需要额外空间,不稳定排序。
归排速度稳定,常数比快排略大,需要额外空间,稳定排序。


看得出是数据越多,arrays.sort倾向用空间来换时间。少数据的时候时间复杂度差别不大,就不占用额外空间了。
vector(数组实现,线程安全)
1.某一时刻只有一个线程能够读写vector
2.同步高花费,访问比arraylist慢
linkedlist(链表)
1.适合数据动态插入和删除
2.随机访问和遍历慢
3.可操作表头表尾,可当堆栈、队列、双向队列用
stack(继承vector类)
栈是 后进先出的。 栈提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。
Queue接口(LinkedList实现了queue接口)
1. Queue接口窄化了对LinkedList的方法的访问权限,完全只能访问Queue接口所定义的方法
2. BlockingQueue继承了Queue接口(线程池必考blockingqueue类别)
线程安全的list: copyonwritelist, synchronizedlist
我们可以使用Collections.synchronizedList(List