这个感觉跟我之前的做过的一道题很像,反正都是按Value排序,贴下我翻出来的代码,O(∩_∩)O~(自己现在都忘可以这样做,呵呵)。
原理是: 定义一个比较器给TreeSet集合,比较器比较的内容是通过Map.Entry的获取到键对应的值(比较器接收两个键,但是是通过键获取到值,用值进行比较);-
- final TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
- //...................................(这里是给TreeMap添加键值的过程,因为有使用局部使用,所以上面需final修饰)
- //创建一个以Map映射中的Value排序的TreeSet集合;
- TreeSet<Character> ts = new TreeSet<Character>(new Comparator<Character>(){
- public int compare(Character c1,Character c2)
- {
- int num = tm.get(c2)-tm.get(c1);
- if(num==0)
- {
- return c1.compareTo(c2);
- }
- return num;
- }});
- for(Character i : tm.keySet()) //将Map中的键存入该TreeSet集合;
- {
- ts.add(i);
- }
复制代码 这个方法应该挺不错了,呵呵,仅供参考。 |