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]

提前致谢。

4

1 回答 1

3

无论您的解决方案如何,如果我正确理解了您的问题,那么您的输入将是一个数组(包含重复项),输出将是重复数组的列表。我对这个问题有一个简单的方法,那就是Map关键IntegerList价值。在下面写了一个小片段(支持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 版本有限制,尽管使用 google集合库 - 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));
}
于 2013-06-20T04:57:20.127 回答