首页 > 代码库 > 数组中出现最多的数,以及接口 Map.Entry<K,V>

数组中出现最多的数,以及接口 Map.Entry<K,V>

 1 package test.tools;
 2 
 3 import java.util.Collection;
 4 import java.util.Collections;
 5 import java.util.HashMap;
 6 import java.util.Map;
 7 
 8 public class TestArr {
 9     
10     public static void MaxCount(int[] arr) {
11         Map<Integer, Integer> map = new HashMap<Integer,Integer>();
12         for(int i=0; i<arr.length; i++) {
13             //数组中已经出现此数字,次数加1
14             if(map.containsKey(arr[i])){
15                 int count = map.get(arr[i]);
16                 /*HashMap不允许key重复*/
17                 //map.remove(arr[i]);
18                 map.put(arr[i], count+1);
19             }else{
20                 //数字首次出现,次数设置为1
21                 map.put(arr[i], 1);
22             }
23         }
24         System.err.println(map);
25         Collection<Integer> collection = map.values();
26             // 找出map的value中最大值
27             int maxCount = Collections.max(collection);
28             int num = 0;
29             for(Map.Entry<Integer, Integer> entry : map.entrySet()){
30                 //得到value为maxCount的key,也就是数组中出现次数最多的数字
31                 if(entry.getValue() == maxCount){
32                     num = entry.getKey();
33                 }
34             }
35             System.out.println("出现次数最多的数:" + num);
36             System.out.println("共出现" + maxCount + "次");
37             
38     }
39     
40     public static void main(String[] args) {
41         int[] arr = {1,2,3,4,1,1,1,2,2,5,4,6,7,8,3,3,5,5,5,5,1,1,1};
42         MaxCount(arr);
43     }
44 }

结果:

{1=7, 2=3, 3=3, 4=2, 5=5, 6=1, 7=1, 8=1}
出现次数最多的数:1
共出现7次

数组中出现最多的数,以及接口 Map.Entry<K,V>