1. 程式人生 > >取出數組中重復最多的數

取出數組中重復最多的數

void 存在 num class 利用 算法 req get entryset

思路:把數組中的每個元素作為key存到map中 如果map沒有value 設為1
有則value+1
然後用類似於選擇排序的算法取出value 最大的那個value 的key即可

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/*
*利用map key唯一性 唯一來存儲數組的原數,而每遍歷map中判斷出已有key(即已有相同元素)存在,則key對應的value+1
*若沒有,則把元素設為key,value設為1
*/
public class Test_plus {
    public static int findMostFrequentInArray(int[] a) {
        int result = 0;
        int size = a.length;
        if(size==0)
            return Integer.MAX_VALUE;
        Map<Integer,Integer>m=new HashMap<Integer,Integer>();
        //開始遍歷數組,往map中設置數組中每個元素(對應map中的key)對應出現的次數(對應map中的value)
        for(int i=0;i<size;i++) {
            if(m.containsKey(a[i])) {
                m.put(a[i], m.get(a[i])+1);
            }
            else {
                m.put(a[i], 1);
            }
        }
        int most=0;
        Iterator iter = m.entrySet().iterator();
        //開始遍歷 比較map中每個key對應的value,取最大值,返回
        while(iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            int key=(Integer)entry.getKey();
            int val=(Integer)entry.getValue();
            if(val>most) {
                result=key;
                most=val;
            }
        }
        return result;
    }
    public static void main(String[] args) {
        int[] array= {1,5,4,3,4,4,5,4,5,5,6,6,6,6,6};
        int maxFrequenceNum=findMostFrequentInArray(array);
        System.out.println(maxFrequenceNum);
    }

}

取出數組中重復最多的數