2012-02-11 58 views
0

可能重複:
Java - Distinct List of Objects獲取不同元素的數量排序的陣列

我有規模龐大的有序數組(約3000字符串), 我需要創建一個對象爲每個不同的字符串,因此我需要在原始數組中創建一個大小等於不同字符串的對象數組。

有什麼建議?

謝謝

+2

請問:http://stackoverflow.com/questions/1019854/java-distinct-list-of-objects你需要什麼? – Nix 2012-02-11 14:46:56

+0

我嚴重懷疑3000可以被認爲是一個巨大的尺寸。也許如果它是100萬... – 2012-02-11 14:58:30

+0

我知道3000不是很大,但我的意思是處理時間明智。 – user1203861 2012-02-11 15:00:00

回答

0

那麼,如果你需要不同的元素,而不僅僅是數字,你可以使用Set

A設置爲:

不包含重複元素的集合。

你不斷地將你的元素添加到集合中,然後看看集合包含的內容。

東西類似:

public static String[] getDistinct(String[] input) { 

    Set<String> distinct = new HashSet<String>(); 
    for(String element : input) { 
     distinct.add(element); 
    } 

    return distinct.toArray(new String[0]); 
} 

用法:

String[] input = new String[] {"a", "b", "a", "c", "a", "b", "d"}; 
String[] distinct = getDistinct(input); 

for(String element : distinct) { 
    System.out.println(element); 
} 

結果:

d B C A

注意,元件毫安的順序不保存。

要找到不同元素的數量,用途:

getDistinct(input).length 
0

我覺得一個集是你要找的。試試自己,如果您需要任何幫助,請提出具體問題。

+0

好的,我誤解了。我調整了答案,總結了不同的字符串。 – 2012-02-11 14:57:23

+0

謝謝,我會嘗試 – user1203861 2012-02-11 15:00:25

0

僞代碼:

previous = Null 
sum_size = 0 

for (String current: yourarray) { 

    if (!current.equals(previous)) { 
     sum_size += current.size() 
    } 
    previous = current 
} 

sum_size是陣列中不同元件的附加尺寸。

+1

他不想指望有多少不同的對象有 – 2012-02-11 14:49:42

+0

好的,我誤解了這一點。我調整了答案,總結了不同的字符串 – 2012-02-11 15:00:02