Java ArrayLists顺序以及ArrayLists与Vectors的相对优点

时间:2011-09-13 00:33:20

标签: java vector arraylist

如果将元素逐个添加到数组列表中,例如:

 ArrayList alist = new ArrayList();
 alist.add("A");
 alist.add("B");
 alist.add("C");
 alist.add("D");

然后通过说alist.get(2)检索第三个元素,我保证检索我添加的第三个元素吗?

问题的第二部分,假设第一个问题的答案是肯定的:我何时使用ArrayList而不是Vector,反之亦然。

4 个答案:

答案 0 :(得分:6)

“保证”?由于对问题第二部分的回答,这很难回答。

默认情况下,ArrayList不同步;矢量是。

因此,如果您正在运行多线程应用程序,您的ArrayList是共享的,可写状态,并且您没有正确同步,您可能会发现保证不是那么稳固。

如果你在一个线程中运行,你编写的代码将返回“C”。

你仍然应该更喜欢ArrayList,因为同步很昂贵,你可能并不总是想付出代价。

答案 1 :(得分:0)

是的,您可以保证检索您添加的第三个元素。

如果您只使用单线程代码,请使用ArrayList。如果您需要确保列表是线程安全的,请使用Vector。

答案 2 :(得分:0)

是的,保证元素按照添加顺序编制索引(非常像基本数组)。

您绝对有必要使用Vector,因为它是deprecated

答案 3 :(得分:0)

回答问题的第一部分是肯定的,你会得到“C”。

当单个线程正在操作(添加/删除)ArrayList时,您应该使用ArrayList。 如果两个或多个线程正在操作(添加/删除),则需要使用Vector,因为Vector是线程安全的 我希望这有帮助