2011-03-03 125 views
3

我正在尋找像ArrayList這樣的對象,它可以讓我避免重複的條目。 例如,它可能有一個方法,在將每個條目添加到ArrayList之前調用'contains()'來使每個條目有效。想避免ArrayList中的重複條目

ArrayList<String> al = new ArrayList<String>(); 
if(!al.contains("red")){ 
    al.add("red"); 
} 

是否有這樣的事情存在?

+0

這個問題更適合StackOverflow。你正在尋找的是一個Set(java.util.Set),很可能是java.util.HashSet。 – 2011-03-03 12:06:00

回答

8

ArrayLists和列表通常不是爲了避免重複而設計的,它們被設計爲保持多個元素順序的集合類型。如果你想收集更適合這份工作,那麼你要一套:

Set<String> set = new HashSet<String>(); 

然後,您可以添加所有你想要設置的,它永遠不會包含重複的字符串。請注意,如果您在自己寫的課程中使用該功能,則需要執行equals()hashcode()才能正常工作。

正如下面的評論,如果你仍然需要維護秩序刪除重複項,然後LinkedHashSet是你的朋友。

+3

如果需要維護訂單,請使用'LinkedHashSet'。 – 2011-03-03 14:23:42