查找重复元素的数量并创建它们的数组

时间:2013-06-20 04:43:44

标签: java arrays java1.4

我有一个像[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]

提前致谢。

1 个答案:

答案 0 :(得分: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可能会更容易。 Library适用于Java 1.6 +

Snippet -

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));
}