最近面试总被面试到,整理出几种方式(有参考别人的部分)
/** * java一个字符串中出现次数最多的字符以及次数 * @param args */ public static void main(String[] args) { String str = "abccadbcadbc"; //字符串放入map Map<Character,Integer> map = getNumberOfCharacters(str); //若想要打印出出现次数最多的字母以及次数,要将map进行排序 sortMap(map); } /** * 将字符串放进map并将字母作为key值,将出现次数作为value值 * @param str 字符串 */ public static Map<Character,Integer> getNumberOfCharacters(String str){ char [] chars = str.toCharArray(); 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); } } //直接输出字符以及出现的个数 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()); }
如有问题,请留言沟通,有更好的方法,请留言交流,谢谢.阅读全文