map集合中取出分类优先级最高的类别名称
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 }