2010-08-04 64 views
2

我有一個ArrayList<Integer>,這是從我的數據庫中拉出來的多年,我想知道如何循環它們以便我可以刪除重複項。
由於事先
院長如何刪除ArrayList中的重複條目

+4

我寧願讓數據庫使用SQL來完成過濾工作,以便它完全返回所需的結果。它的任務無疑會比Java所能做的更有效率。 – BalusC 2010-08-04 13:49:33

+2

順便說一句:[java + remove + duplicates + from + list](http://stackoverflow.com/search?q=java+remove+duplicates+from+list):) – BalusC 2010-08-04 13:55:23

+0

此外,它需要更少的數據從數據庫發送到應用程序。 – 2010-08-04 13:55:56

回答

5

如果不應存在重複項,請使用Set而不是List

您可以使用一個Set,你目前正在使用您的List,或者您可以使用Set刪除重複的元素。

Set<Integer> years = new HashSet<Integer>(myOldArrayList); 

或者你可以從一個集合轉換到另一個集合。我不確定這會對性能有什麼影響:

ArrayList<Integer> years = // populate from database 
years = new ArrayList<Integer>(new HashSet<Integer>(years)); 
3

如果順序並不重要,只是做一個Set了他們,然後回到如果需要再次列出:

Set<Integer> set = new HashSet<Integer>(yourList); 
ArrayList<Integer> list = new ArrayList<Integer>(set); 
+4

如果順序很重要,請使用'LinkedHashSet'。 – BalusC 2010-08-04 13:48:34

+1

如果順序無關緊要,他應該首先使用Set,而不用擔心重複。 – nojo 2010-08-04 13:49:11

+0

@BalusC:好主意,我沒有想到那個。 – 2010-08-04 13:49:29

2

即興,將一個new ArrayList<Integer>(new HashSet<Integer>(your_list))工作?哦,別忘了排序。