Java 中的 ArrayList 与 Vectors,如果线程安全不是问题
2022-09-01 12:34:57
的性能和 之间真的有那么大的区别吗?当线程安全不是问题时,始终使用ArrayLists是一种好习惯吗?Vector
ArrayList
的性能和 之间真的有那么大的区别吗?当线程安全不是问题时,始终使用ArrayLists是一种好习惯吗?Vector
ArrayList
Vector 起源于预收集 API 时代,此后经过改造,成为其中的一部分。根据我所读到的内容,它没有被弃用的原因是因为核心API依赖于它。
ArrayList是作为集合API的一部分从头开始编写的,因此应该使用,除非您需要支持Java版本到1.2。
如果需要线程安全的 ArrayList,可以使用静态工厂方法来生成列表。Collections.synchronizedList(new ArrayList<type>);
如果线程安全不是问题,则速度会更快,因为它不必同步。但是,您应该始终将变量声明为 a,以便以后可以根据需要更改实现。ArrayList
List
我更喜欢显式处理同步,因为很多操作需要多次调用。例如:
if (!myList.isEmpty()) {
myList.get(0);
}
应该是:
synchronized (myList) {
if (!myList.isEmpty()) {
myList.get(0);
}
}