Vector.contains()或Hashtable.get()哪个更好

时间:2013-09-23 07:52:10

标签: java

我必须将我的字符串数据放入集合中,然后仅在存在时查询。例如:

Vector<String> v = new Vector<String>();
v.add("a");
v.add("b");
if(v.contains("a")){}

Hashtable<String, String> ht = new Hashtable<String, String>()
ht.put("a");
ht.put("b");
if(ht.get("a") != null){} 

哪种方式更好还是有更好的解决方案?

编辑:这是一个大数据,我正在寻找最快的解决方案。

3 个答案:

答案 0 :(得分:7)

两者都被认为已过时 - 如果您只需要检查存在,则可以使用HashSet。它有addcontains方法,如Vector。

答案 1 :(得分:1)

通常Hashtable应该更快,因为vector具有最差情况运行时O(n),因为它遍历向量并搜索元素。 Hashtables可以更快地访问,因为他们根据哈希值(O(1))实施了保存。

答案 2 :(得分:1)

您希望实现的最佳选择是使用Set

Set<String> mySet = new HashSet<>();
mySet.add(myString);
if(mySet.contains(myString)) {
    // do some work
}