第四章 java中ArrayList和Vector的区别


常见的面试问题之一是“ArrayList 和 Vector 有什么区别”。在我们真正看到区别之前,让我先简单介绍一下两者。

数组列表

  • ArrayList 是列表接口的实现。
  • ArrayList 未同步(因此不是线程安全的)
  • ArrayList 是使用数组作为内部数据结构实现的,可以动态调整大小。
  • 当 ArrayList 的大小增加时,它的大小会增加一半。

向量

  • Vector 是列表接口的实现。
  • 向量是同步的(所以线程安全)
  • Vector是使用数组作为内部数据结构实现的。它可以动态调整大小。
  • 当向量的大小增加时,数组的大小会加倍。

ArrayList 与向量:

Parameter Vector ArrayList
Synchonized Yes No
ThreadSafe Yes No
Performance It is slower than arraylist It is faster than Vector
Changes in internal size of array when resized Vector doubles size of its internal array when its size is increased ArrayList increases half of its size when its size is increased.

哪个更好?数组列表还是向量?

这实际上取决于我们的需要。Vector 比 ArrayList 慢,因为它的方法是同步的,所以如果我们不在多线程环境中工作,那么 ArrayList 是更好的选择。

最佳实践:

当我们初始化 ArrayList 或 Vector 时,总是以最大容量初始化 java 程序将需要,因为递增大小是更昂贵的操作。

我们可以同步 ArrayList 吗?

是的,ArrayList 也可以在 Collections.synchronizedList(arraylist) 方法的帮助下进行同步

List synchronizedArrayList=Collections.synchronizedList(arraylist);


原文链接:https://codingdict.com/