取出數組中重復最多的數
阿新 • • 發佈:2018-08-22
void 存在 num class 利用 算法 req get entryset 思路:把數組中的每個元素作為key存到map中 如果map沒有value 設為1
有則value+1
然後用類似於選擇排序的算法取出value 最大的那個value 的key即可
有則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); } }
取出數組中重復最多的數