【发布时间】:2013-01-17 13:22:45
【问题描述】:
我在最近的程序中经常使用向量。但是,我在某处读到 Vectors 有点旧。这是否意味着它将过时或逐步退出 Java 是值得商榷的。所以建议应该使用 ArrayLists。我注意到 ArrayLists 没有方法 remove(int index, Object object) 而向量有。我问的原因是假设我添加了一个字符串,比如“String 1”。我尝试再次添加相同的字符串。如何删除第一个字符串而不计算它在数组列表中的出现次数。
【问题讨论】:
-
你不能。列表不应该消除重复
-
ArrayLists 确实有一个通过 Index 删除的方法
-
Vector 也没有任何
remove(int index, Object object)。 ArrayList 和 Vector 都有remove(int)和remove(Object),因为这些方法在 List 接口中,它们都是 List 的实现。 -
@pickypg - 呃,大声笑?它是完全线程安全的;因此,同步。但是,如果您不需要线程安全,那就是开销。
-
@BrianRoach:pickypg的意思是,在线程安全的程序中,你经常想以原子的方式做
if (!list.contains(foo)) list.add(foo);之类的事情,而列表的同步根本没有帮助使这成为可能。所以无论如何你都需要外部同步,使 ArrayList 成为一个有效的选择,即使没有同步。