List主要方法:
E get(int index);
取得索引在index的元素boolean add(E e);
向表尾添加元素void clear();
清除所有元素remove(int index);
删除索引为index的元素
List有两种主要实现ArrayList和LinkedList,第一种是顺序表,第二种是链表。
这两种实现都是线程不安全的,至于为什么不把他们实现为线程安全,估计是基于性能考虑吧。
List还有一种实现为Vector,Vector和ArrayList很像,都是基于数组实现的,但是Vector是线程安全的,Vector每次扩容默认扩一倍,而ArrayList每次默认扩一般。
ArrayList和LinkedList可以用Collections.synchronizedList()来保证线程安全
List<T> synchronizedList(List<T> list);
输入一个List,返回一个线程安全的List,原理就是讲每个方法都加上同步语句。
参考:
https://javapapers.com/core-java/java-collection/difference-between-vector-and-arraylist-in-java/
https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#synchronizedList-java.util.List-
https://docs.oracle.com/javase/8/docs/api/java/util/Vector.html
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html