以下是一个实现该功能的 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)来统计每个数出现的频率,然后找到出现频率最大的数,即众数。最后将所有众数存入一个数组并返回。

Java 中查找 List 集合中的所有众数并返回数组

原文地址: https://www.cveoy.top/t/topic/lpNJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录