如果将元素逐个添加到数组列表中,例如:
ArrayList alist = new ArrayList();
alist.add("A");
alist.add("B");
alist.add("C");
alist.add("D");
然后通过说alist.get(2)检索第三个元素,我保证检索我添加的第三个元素吗?
问题的第二部分,假设第一个问题的答案是肯定的:我何时使用ArrayList而不是Vector,反之亦然。
答案 0 :(得分:6)
“保证”?由于对问题第二部分的回答,这很难回答。
默认情况下,ArrayList不同步;矢量是。
因此,如果您正在运行多线程应用程序,您的ArrayList是共享的,可写状态,并且您没有正确同步,您可能会发现保证不是那么稳固。
如果你在一个线程中运行,你编写的代码将返回“C”。
你仍然应该更喜欢ArrayList,因为同步很昂贵,你可能并不总是想付出代价。
答案 1 :(得分:0)
是的,您可以保证检索您添加的第三个元素。
如果您只使用单线程代码,请使用ArrayList。如果您需要确保列表是线程安全的,请使用Vector。
答案 2 :(得分:0)
是的,保证元素按照添加顺序编制索引(非常像基本数组)。
您绝对有必要使用Vector,因为它是deprecated。
答案 3 :(得分:0)
回答问题的第一部分是肯定的,你会得到“C”。
当单个线程正在操作(添加/删除)ArrayList时,您应该使用ArrayList。 如果两个或多个线程正在操作(添加/删除),则需要使用Vector,因为Vector是线程安全的 我希望这有帮助