一个HashMap和TreeSet综合使用的小例子

来源:互联网 发布:存储卡数据修复 编辑:程序博客网 时间:2024/06/05 01:07
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;}@Overridepublic int compareTo(T o) {if (this.count!=o.count) return o.count-this.count;return c-o.c;}@Overridepublic String toString() {return "字符" + c + "出现的次数:" + count ;}}


字符a出现的次数:3字符b出现的次数:3字符d出现的次数:3字符h出现的次数:2字符j出现的次数:2字符c出现的次数:1字符m出现的次数:1


0 0
原创粉丝点击