有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中获取模式值

知道如何从数组中获取模式值吗?例如,如果我有一个不同数字的数组,我如何使用Java来搜索哪个数字出现得最多


共 (2) 个答案

  1. # 1 楼答案

    一个基本但效率低下的算法是:

    static int modal( int[] values ) {
        int modal = 0;
        int mfreq = 0;
        for( int i : values ) {
            // Is this value the most frequent we've found so far?
            int freq = 0;
            for( int j : values ) {
                if( j == i ) {
                    freq++;
                }
            }
            if( freq > mfreq ) {
                modal = i;
                mfreq = freq;
        }
        return modal;
    }
    

    通过预先计算每个值的频率,并将其存储在地图或类似文件中,您可以做得更好一些,尽管这仍然需要通过值进行循环,并且仍然需要另一个循环来确定哪个频率最高

  2. # 2 楼答案

    这有点离谱,我不知道它的性能如何,但是如果你愿意在Java中尝试一下Groovy

    static int modal( ArrayList values ) {
        use(Collections){
            values.max{ values.frequency(it) } 
        }
    }