2013-09-23 92 views
-1

我必須把我的字符串數據放在一個集合中,然後只在存在時才查詢。例如:Vector.contains()或Hashtable.get()哪個更好

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){} 

哪種方式更好或者是否有更好的解決方案?

編輯:這是一個大數據,我正在尋找最快的解決方案。

+0

「更好」以什麼方式?更快?內存消耗更少?更好的實現;)? – codeling

+0

需要更多的上下文...數據來自哪裏? – Thilo

+1

您可能應該使用'Vector' **或**'Hashtable'。他們都過時了。 – chrylis

回答

1

通常Hashtable應該更快,因爲vector的最壞情況運行時O(n),因爲它運行通過矢量並搜索元素。 Hashtables由於基於Hashvalues進行保存(O(1)),因此具有更快的訪問權限。

7

兩者都被視爲已過時 - 如果您只需檢查是否存在,則可以使用HashSet。它有addcontains方法像Vector。

1

您要使用達到什麼Set最好的選擇:

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