2013-08-05 35 views
0

例如:String[] str = {"M1","M1","M1","M2","M3"};
最值得推薦的是答案 - HashSet。哪種方法或者你有更好的想法?如何計算數組中的唯一元素?只需要想法

+1

你不喜歡使用哪一部分? – reto

+5

如果沒有任何外部約束(例如,「保留獨特元素的原始順序」,「不使用內建函數」或「不消耗任何額外內存」),HashSet也是我的建議。 – CPerkins

回答

6

除非你想自己實現這個,否則Set是要走的路。一組將只允許添加獨特的元素,並會自動過濾重複。

HashSet功能的工作原理如下:

計算該對象的散列值。接下來,該集檢查是否有任何具有相同哈希值的對象.equals()新值。如果是這樣,新值將被忽略。如果不是,則將其添加到該集合中。

如果您將所有內容添加到集合中,然後詢問其大小,您將獲得大量的獨特元素。

+0

+1解釋。 – Xynariz

2
new HashSet(Arrays.asList(str)).size(); 
1

我更喜歡使用本來已經提供的東西。你的要求是Set

你可以做以下 -

Set<String> set = new HashSet<String>(Arrays.asList(str)); 
set.size(); 
1

你可以嘗試不用創建臨時表在其他的答案中這也

String[] str = {"M1","M1","M1","M2","M3"}; 
    HashMap<String,String> map=new HashMap<>(); 
    for(String i:str){ 
     map.put(i, i); 
    } 
    System.out.println(map.keySet().size()); 
1

,你也可以使用:

Set<String> set = new HashSet<>(); 
Collections.addAll(set, str); 
int countUnique = set.size();