我有一个数组元素列表,如[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));
}