一个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


版权声明:本文为博主原创文章,未经博主允许不得转载。