【问题标题】:ArrayList vs Vector [duplicate]ArrayList vs Vector [重复]
【发布时间】:2013-01-17 13:22:45
【问题描述】:

可能重复:
What are the differences between ArrayList and Vector?

我在最近的程序中经常使用向量。但是,我在某处读到 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 成为一个有效的选择,即使没有同步。

标签: java vector arraylist


【解决方案1】:

但是我在某处读到 Vectors 有点旧:是的,vector 类被认为是遗留的,并且仍在库中以支持旧的应用程序。替换为Collections.synchronizedList(list)

我注意到 ArrayLists 没有方法 remove :您可以根据索引删除数据。如果你想删除对象使用boolean java.util.ArrayList.remove(Object o):不要忘记覆盖equals和hashcode方法:)

如何删除第一个字符串而不计算它在数组列表中出现的次数:最好的方法是使用 set.如果线程安全是一个问题,请使用<Object> Set<Object> java.util.Collections.synchronizedSet(Set<Object> s)

希望您的所有问题都得到澄清。 问候, 普尼斯

【讨论】:

  • 谢谢惩罚。这是我第一次听说套装。所以我要看看:) 谢谢大家的反馈。
猜你喜欢
  • 2011-02-22
  • 2014-01-24
  • 2021-12-19
  • 2023-04-04
  • 2014-09-17
  • 2018-02-28
  • 2013-01-25
  • 2015-06-23
相关资源
最近更新 更多