2013-08-06 13 views
0

給定一個可能包含重複項的列表(如下所示),我需要能夠統計唯一元素的數量。使用Java的內置Set類來統計列表中的唯一值

List<String> list = new ArrayList<String>(); 
list.add("M1");list.add("M1"); 
list.add("M2");list.add("M2"); 
list.add("M3");list.add("M3"); 

我認爲這可以通過使用Java的Set來完成。如何將列表項目複製到一個集合中,以及如何從集合中獲取計數?

+0

發佈一些代碼,試圖解決您遇到的問題和具體問題。 –

+0

不要忘記列表構造函數中的括號和分號。 – Xynariz

+0

我很喜歡這個問題,這是一個所謂的重複問題,在這個問題之後被問及...並且由同一個人問。編輯這個問題不是很容易嗎? :P – Xynariz

回答

4

我希望我理解正確的問題。這聽起來像你正在嘗試使用java的Set類來計算ArrayList中唯一條目的數量。如果是這樣的話,你需要:

  • 制定一套(你必須使用一個具體的類,我將在例子中使用的HashSet)
  • 迭代通過ArrayList中,並把這些項目(字符串,在這種情況下)進入集合。 (我將使用方法的addAll)
  • 獲取集的大小

實施例:

List<String> list = new ArrayList<String>(); 
Set<String> set = new HashSet<String>(); 
list.add("M1"); 
list.add("M1"); 
list.add("M2"); 
list.add("M3"); 

set.addAll(list); 
System.out.println(set.size()); 

編輯:該解決方案(爲實用目的)相同阿列克謝的溶液。 Alexey在我寫解決方案時剛發佈。

+0

我標記爲正確答案,但實際上有人已更改主題和內容的名稱。 –

3
... 
     List<String> list = new ArrayList<String>(); 
     list.add("M1");list.add("M1"); 
     list.add("M2");list.add("M2"); 
     list.add("M3");list.add("M3"); 

     HashSet hashSet = new HashSet(); 
     hashSet.addAll(list); 
     System.out.println(hashSet.size()); 
... 

它讓 -

3