2013-06-20 96 views
0

我有數組元素,比如[121,122,121,122,123,121,122] 輸出的名單應該是所有的重複元素的數組一樣查找計數和陣列

[121,121,121] 
[122,122,122] 
[123] 

我僅限於使用的Java 1.4。這將是我們在這個版本中的最後一個版本,該應用程序在僅支持1.4的SAP J2EE服務器上運行。

看到完整的代碼從@Subhrajyoti Majumder的暗示

的尺寸打印9,但是當我迭代正在打印太多.. 輸出應爲以下基於交貨數目

[a1,a2] 
[a3,a4] 
[a6] 
[a7,a8,a9,a10] 

提前致謝。

+3

什麼你嘗試過什麼呢? – fge

+3

Java 1.4?爲什麼?來自[J2SE 1.4.2]的注意事項(http://www.oracle.com/technetwork/java/javase/index-jsp-138567.html)*「** J2SE 1.4.2在其Java技術終止時( EOL)過渡期** EOL過渡期始於2006年12月11日,並將於2008年10月30日完成,屆時J2SE 1.4.2將達到其使用壽命(EOSL)。「* –

+1

這將是我們的該版本的最新版本中,該應用程序在僅支持1.4的SAP J2ee服務器上運行。感謝您的回覆。 –

回答

3

不管你的解決方案是否正確理解你的問題,那麼你的輸入將是一個數組(其中包含重複項),輸出將是重複數組列表。我對這個問題很簡單,即Map,其中Integer將是關鍵,List將是值。寫下面的一小段(支持java 1.4)。

Map map = new HashMap(); 
int[] array = {121,122,121,122,123,121,122}; 
for(int i=0;i<array.length;i++){ 
    if(map.get(array[i])==null){ // no entry available 
     List list = new ArrayList(); 
     list.add(array[i]); 
     map.put(array[i],list); 
    }else // entry is already available 
     map.get(array[i]).add(array[i]); 
} 

我知道你有java版的約束,雖然這可能是與谷歌collection library - guavaMultiSet容易。 庫適用於Java 1.6+

快報 -

Multiset<Inetger> multiSet = HashMultiset.create(); 
int[] array = {121,122,121,122,123,121,122}; 
multiSet.addAll(Arrays.asList(array)); 
for (Inetger i : multiSet.elementSet()) { 
    System.out.println(i + ": " + multiSet.count(i)); 
} 
+0

是的,我同意我試圖使用您的代碼。 –