package hello; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; public class MyAiPaWorker { /** * java一个字符串中出现次数最多的字符以及次数 * @param args */ public static void main(String[] args) { String str = "abccadbcadbc"; Map<Character,Integer> map = getNumberOfCharacters(str); sortMap(map); } /** * 将字符串放进map并将字母作为key值,将出现次数作为value值 * @param str 字符串 */ public static Map<Character,Integer> getNumberOfCharacters(String str){ char [] chars = str.toCharArray();// 转化成char[] 数组 // Character 类在对象中包装一个基本类型 char 的值 Map<Character,Integer> map = new HashMap<Character,Integer>(); // 循环获取每个字符出现的个数 for(char c:chars){ if(map.containsKey(c)){ map.put(c, map.get(c)+1); }else{ map.put(c, 1); } } //直接输出字符以及出现的个数 // TODO map.entrySet()返回map中各个键值对映射关系的集合。 // Map.Entry是Map声明的一个内部接口,此接口为泛型, // 定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对) for(Map.Entry<Character,Integer> entry :map.entrySet()){ System.out.println("字符是"+entry.getKey()+"出现的次数是"+entry.getValue()); } return map; } //排序map private static void sortMap(Map<Character, Integer> map) { List<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet()); Collections.sort(list,new Comparator<Map.Entry<Character, Integer>>() { //倒序排列 @Override public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); //打印出现自出的字符以及次数 System.out.println("出现次数最多的字符"+list.get(0).getKey()+"==次数为"+list.get(0).getValue()); } }