找出数组中出现次数最多的数
在处理数据分析任务时,统计某个集合中哪个元素出现得最频繁是一个经典问题。今天分享一个基于 Java 的实现方案,利用 HashMap 配合遍历逻辑来完成统计。
实现思路
这个方案的核心在于利用 Map 的键值特性来记录频次。虽然直接遍历一次数组并用 merge 方法效率更高,但为了展示基础逻辑,下面的代码采用了双重循环先计算频次再存入 Map 的方式。
具体步骤如下:
- 初始化数组和用于存储计数的 Map。
- 外层循环遍历每个元素,内层循环统计它在整个数组中出现的总次数。
- 将统计结果放入 Map,Key 是数字,Value 是次数。
- 遍历 Map 找出最大的 Value 值,并记录对应的 Key。
- 再次遍历 Map,收集所有等于最大次数的 Key,确保不会遗漏并列的情况。
完整代码
package Test;
import java.util.HashMap;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
int[] a = {6, 6, 6, 1, 2, 8, 8, 5, 5, 5, 12};
int maxCount = 0;
int maxValue = 0;
HashMap<Integer, Integer> map = new HashMap<>();
HashMap<Integer, Integer> map2 = new HashMap<>();
// 统计每个数字的出现次数
for (int i = ; i < a.length; i++) {
;
( ; j < a.length; j++) {
(a[i] == a[j]) {
count++;
}
}
map.put(a[i], count);
}
Iterator<Integer> it = map.keySet().iterator();
(it.hasNext()) {
it.next();
(map.get(key) > maxCount) {
maxCount = map.get(key);
maxValue = key;
}
}
Iterator<Integer> it2 = map.keySet().iterator();
(it2.hasNext()) {
it2.next();
(map.get(key) == maxCount) {
map2.put(key, maxCount);
}
}
Iterator<Integer> it3 = map2.keySet().iterator();
(it3.hasNext()) {
it3.next();
System.out.print( + key + );
System.out.println( + map2.get(key));
}
}
}

