都是List,都是有序集合
Vector是早期的线程安全的动态数组,不需要线程安全,就不建议使用
ArrayList也是动态数组,但不是线程安全的
LinkedList是双向链表
动态数组内部使用了数组形式去存储,适合随机访问,除了适合尾部的插入和删除,中间插入式性能很低的
LinkedList进行节点插入,删除高效,但是随机访问性能低下
如上是简单的集合框架设计
对于这些集合框架中,可以分为List Set Queue/Deque
然后是一些简单的线程安全容器
可以创建的方式有
static <T> List<T> synchronizedList(List<T> list)
List list = Collections.synchronizedList(new ArrayList());
这些集合其实简单的使用synchronized进行基本的同步支持,非常的粗暴,而且都支持fail-fast,出现并发问题直接抛出异常,避免不可预计的问题
Java提供的排序算法是什么排序方法?
原始数据类型是双轴快速排序
对象类型就是TimSort 归并和二分插入查找结合的排序算法
Java8还引入了并行排序算法,支持了并发排序,使用了fork-join
还有就是因为一些集合实例是不会不修改的
所以支持了of静态工厂创建
List<String> simpleList = List.of(“Hello”,”world”);