挺简单的。直接上代码了。
try { BufferedReader bufferedReader = new BufferedReader(new FileReader("填自己的文件所在位置")); Map<String, Integer> map = new HashMap<>(); String line = ""; while((line = bufferedReader.readLine())!=null){ String[] split = line.split("\\s+"); //如果key已经存在 if(map.containsKey(split[1])){ int integer = map.get(split[1])+1; map.put(split[1],integer); }else {//不存在 map.put(split[1],1); } } List<Map.Entry<String, Integer>> entryArrayList = new ArrayList<>(map.entrySet()); //排序 Collections.sort(entryArrayList, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return -o1.getValue().compareTo(o2.getValue()); } }); //输出第一条数据 System.out.println(entryArrayList.get(0).getKey()+" "+entryArrayList.get(0).getValue()); } catch (Exception e) { e.printStackTrace(); }
上面已经得出了众数。
这里再补充一个HashMap对key 和对 value 排序。
HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("1",1); map.put("3",2); map.put("2",4); map.put("4",6); map.put("5",3);*/ //根据key进行排序 Object[] array = map.keySet().toArray(); Arrays.sort(array);*/ for(Object a : array){ System.out.println(a+" "+map.get(a)); } //根据value进行排序 List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return -o1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry<String,Integer> ma : list){ System.out.println(ma.getKey()+" "+ma.getValue()); }