Java 中查找 List 集合中的所有众数并返回数组
以下是一个实现该功能的 Java 代码示例:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 2, 3, 3, 3, 4, 4, 5));
int[] modes = findModes(list);
System.out.println(Arrays.toString(modes)); // 输出 [3]
}
public static int[] findModes(List<Integer> list) {
Map<Integer, Integer> frequencyMap = new HashMap<>();
int maxFrequency = 0;
for (int i : list) {
int frequency = frequencyMap.getOrDefault(i, 0) + 1;
frequencyMap.put(i, frequency);
maxFrequency = Math.max(maxFrequency, frequency);
}
List<Integer> modesList = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
if (entry.getValue() == maxFrequency) {
modesList.add(entry.getKey());
}
}
int[] modes = new int[modesList.size()];
for (int i = 0; i < modesList.size(); i++) {
modes[i] = modesList.get(i);
}
return modes;
}
}
该代码使用哈希表(HashMap)来统计每个数出现的频率,然后找到出现频率最大的数,即众数。最后将所有众数存入一个数组并返回。
原文地址: https://www.cveoy.top/t/topic/lpNJ 著作权归作者所有。请勿转载和采集!