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



我有一个数组元素列表,如[121,122,121,122,123,121,122]输出应该是包含所有重复元素的数组,例如

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

我被限制使用Java 1.4。这将是我们这个版本的最后一个版本,这个应用程序运行在SAP J2EE服务器上,它只支持1.4。

查看@Subhrajyoti Majumder提示的完整代码

的大小打印9,但当我迭代它打印太多…基于交货号

的输出如下所示
[a1,a2]
[a3,a4]
[a6]
[a7,a8,a9,a10]

无论你的解决方案,如果我正确理解你的问题,那么你的输入将是一个数组(其中包含重复项)和输出将是重复数组的列表。我有一个简单的方法来解决这个问题,那就是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版本的约束,虽然这可能更容易与谷歌集合库-番石榴的MultiSet。库适用于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));
}

相关内容

  • 没有找到相关文章

最新更新