2013-06-20 94 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

是的,我同意我试图使用您的代码。 –