找出数组元素中重复元素最多的数

算法思路:

     使用Map映射表存放每一个数据及出现的次数
     再判断次数大小,进而找出重复次数最多的数

     Map取数据常用方法:

    1、先拿到当前map所有的key 根据key迭代出所有的value

Set<Integer> set = map.keySet();  
Iterator<Integer> it = set.iterator();  
while(it.hasNext()){  
    Integer key = it.next();  
    System.out.println("key:" + key + ", value:" + map.get(key));  
}  

     2、  Map.Entry是Map的一个工具类,提供了从map中读取一行数据的读取,一次可以迭代出map集合中的键值对

Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();  
while (it.hasNext()) {  
    Map.Entry<Integer, String> entry = it.next();  
    System.out.println("key:"+entry.getKey() + ", value:"+entry.getValue());  
}  

实现代码:

package JBArray;

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

/**
 * 找出数组中重复元素出现最多的数
 * @author Dan
 *
 */
public class findMostFrequenInArray {
	
	/**
	 * 思路描述:
	 * 使用Map映射表存放每一个数据及出现的次数
	 * 再判断次数大小,进而找出重复次数最多的数
	 * 
	 * @param a
	 * @return
	 */
	public static int findMostFrequenInArray(int[] a){
		int result = 0;
		int size = a.length;
		if(size == 0){
			return Integer.MAX_VALUE;
		}
		//记录每个元素出现的次数
		Map<Integer,Integer> m = new HashMap<Integer, Integer>();
		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);//插入该元素,次数为1
			}
		}
		//找出出现次数最多的元素
		int most = 0;
		Iterator iter = m.entrySet().iterator();
		while (iter.hasNext()) {
			Map.Entry  entry = (Map.Entry) iter.next();
			int key = (int) entry.getKey();
			int val = (int) entry.getValue();
			if (val>most) {
				result = key;
				most = val;
			}
		}
		return result;
	}
	
	public static void main(String[] args) {
		int[] arr = {1,5,3,3,4,4,4};
		int maxFreNum = findMostFrequenInArray(arr);
		System.out.println(maxFreNum);
	}
	

}

猜你喜欢

转载自blog.csdn.net/hd12370/article/details/81079288