都是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”);

发表评论

邮箱地址不会被公开。 必填项已用*标注