首页 > 解决方案 > 计算数组列表中的重复项

问题描述

Arraylist al = new ArrayList();

Random r = new Random();

int arr[] = new int[100];

for (int i = 0; i < arr.length; i++) { // assuming the array variable is named arr...
    arr[i] = r.nextInt(200);
    al.add(arr[i]);
}

输出应该是这样的

Duplicates:2

Values 2 : count=4

Values 99: count=96

不使用散列的东西 Jdk 1.6_04

标签: javaarraysjdk1.6

解决方案


一个更简单的解决方案是:

al.stream().distinct()
                .forEach(v -> System.out.println("Values " + v + " : count=" + Collections.frequency(al, v)));

获取由不同元素组成的流,然后计算列表中元素的数量Collections.frequency()

更新:如果您不允许使用 java 8 的功能:

Set<Integer> distinctSet = new HashSet<>(al);
for(int i: distinctSet) {
    System.out.println("Valuess " + i + " : count=" + Collections.frequency(al, i));
}

推荐阅读