一个HashMap跟TreeSet综合使用的小例子
一个HashMap和TreeSet综合使用的小例子
package com.huowolf; import java.util.HashMap; import java.util.TreeSet; /* * 统计字符串中每个字母出现的次数 * 输出时要求按照次数降序排序,如果出现次数相同,按照字母升序输出 * * HashMap:计数 TreeSet:排序 */ public class LetterCount { public static void main(String[] args) { String s = "abdhjbcdahjmbda"; HashMap<Character, Integer> hm = new HashMap<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if(hm.containsKey(c)) hm.put(c, hm.get(c)+1); else { hm.put(c, 1); } } /* * 遍历HashMap集合,然后把每一个键值对都包装成T对象的实例, * 放入TreeSet集合,就完成了排序 */ TreeSet<T> ts = new TreeSet<>(); for (Character c : hm.keySet()) { T t = new T(c,hm.get(c)); ts.add(t); } for (T t : ts) { System.out.println(t); } } } class T implements Comparable<T>{ private char c; private int count; public T(char c, int count) { this.c = c; this.count = count; } @Override public int compareTo(T o) { if (this.count!=o.count) return o.count-this.count; return c-o.c; } @Override public String toString() { return "字符" + c + "出现的次数:" + count ; } }
字符a出现的次数:3 字符b出现的次数:3 字符d出现的次数:3 字符h出现的次数:2 字符j出现的次数:2 字符c出现的次数:1 字符m出现的次数:1
版权声明:本文为博主原创文章,未经博主允许不得转载。