1 import java.util.Arrays;
2 import java.util.Collection;
3 import java.util.HashMap;
4 import java.util.Map;
5 import java.util.Map.Entry;
6
7 /*
8 * 取出分类优先级最高的类别名称
9 * 思路:
10 * 对于map集合中的key-value对,统计value值出现的频数,
11 * 将value-频数写入map集合,对频数排序,计算出最高的频数
12 * 输出最高频数对应得key值。
13 */
14 public class MapTest {
15
16 public static void main(String[] args) {
17 //创建map集合
18 Map<String, String> map = new HashMap<>();
19 map.put("Prosper", "网贷");
20 map.put("聚爱财", "网贷");
21 map.put("爱财", "网贷");
22 map.put("美国", "政经");
23 map.put("印度", "政经");
24 map.put("度", "政经");
25 map.put("比特时代", "区块链");
26 map.put("火币资讯", "区块链");
27 map.put("BTC123", "区块链");
28 map.put("123", "区块链");
29 map.put("罚单", "监管");
30 map.put("捷信", "大公司");
31 map.put("信", "大公司");
32 map.put("众筹", "众筹");
33 map.put("sefd", "众筹");
34 map.put("er", "政经");
35
36 //计算value出现的频数并写入map集合(res)
37 Map<String, Integer> res = new HashMap<>();
38 for(Entry<String, String> entry : map.entrySet()){
39 if(res.containsKey(entry.getValue())){
40 res.put(entry.getValue(), res.get(entry.getValue()) + 1);
41 }else{
42 res.put(entry.getValue(), 1);
43 }
44 }
45 System.out.println("res:" + res);
46 /*
47 * res:{区块链=4, 众筹=1, 网贷=3, 大公司=1, 政经=3, 监管=1}
48 */
49
50 //对res集合中的key-value对进行排序,选出最高频数
51 if(res != null){
52 Collection<Integer> c = res.values();
53 Object[] obj = c.toArray();
54 Arrays.sort(obj);
55 Object i = obj[obj.length-1];
56 //Object ii = obj[obj.length-2];
57 System.out.println("最大的value值:" + i);
58 //System.out.println(ii);
59 //System.out.println(i);
60 //res.put("maxvalue", (Integer)i);
61
62 //取出res中最大的频数对应的key(即就是取出)
63 String key = null;
64 for(String getkey : res.keySet()){
65 if(res.get(getkey).equals(i)){
66 key = getkey;
67 }
68 }
69 System.out.println("最大的value对应的key:" + key);
70 }
71 }
72 }