java - 计算数组列表中的重复项
问题描述
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
解决方案
一个更简单的解决方案是:
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));
}
推荐阅读
- javascript - 单击选项卡控制按钮时如何清除页面以前的状态离子框架
- sql - SQL 从嵌套的 FROM 中选择
- javascript - Disable Dropdown Button
- git - 致命:未能读取对象 xxx:权限被拒绝
- detox - 发布中未找到应用程序二进制文件,但未调试
- django - django_models 中的外键
- python - TypeError:“_csv.reader”对象不可调用
- android - XML 布局视图与模拟器视图不同
- h2o - h2o-bindings和h2o-genmodel有什么关系
- python - Moving files to multiple destination