黑马程序员技术交流社区
标题:
急急急!比较器和TreeMap的问题
[打印本页]
作者:
李晓俊老师
时间:
2012-2-27 21:55
标题:
急急急!比较器和TreeMap的问题
本帖最后由 李晓俊 于 2012-2-27 21:58 编辑
public static void main(String[] args)
{
method3("deabbccfff");
}
public static void method3(String s)
{
Map<Character, Integer> map = new TreeMap<Character, Integer>();
for(char c : s.toCharArray())
map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
TreeSet<Entry<Character, Integer>> ts = new TreeSet<Entry<Character, Integer>>(new EntryComp());
ts.addAll(map.entrySet());
System.out.println(map);
}下面是我的比较器
class EntryComp implements Comparator<Entry<Character, Integer>>
{
public int compare(Entry<Character, Integer> en1,Entry<Character, Integer> en2)
{
int num = en1.getValue()-en2.getValue();
return num==0 ? en1.getKey().compareTo(en2.getKey()) : num;
}
}
复制代码
需求是按照次数顺序排序, 次数相同的按照字母顺序: {a=1, d=1, e=1, b=2, c=2, f=3},,,怎么打印不出效果,,
打印结果为{a=1, b=2, c=2, d=1, e=1, f=3}
作者:
杨盼
时间:
2012-2-27 22:59
本帖最后由 杨盼 于 2012-2-27 23:04 编辑
打印错误,map是原始的
作者:
H07000223
时间:
2012-2-27 23:00
本帖最后由 H07000223 于 2012-2-27 23:01 编辑
找了老半天错误,暮然回首~~~
public static void main(String[] args)
{
method3("deabbccfff");
}
public static void method3(String s)
{
Map<Character, Integer> map = new TreeMap<Character, Integer>();
for(char c : s.toCharArray())
map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
TreeSet<Entry<Character, Integer>> ts = new TreeSet<Entry<Character, Integer>>(new EntryComp());
ts.addAll(map.entrySet());
//
System.out.println(map);
大哥你打印目标错误了,蛋疼啊
System.out.println(ts);//应该打印这玩意儿
}
下面是我的比较器
class EntryComp implements Comparator<Entry<Character, Integer>>
{
public int compare(Entry<Character, Integer> en1,Entry<Character, Integer> en2)
{
int num = en1.getValue()-en2.getValue();
return num==0 ? en1.getKey().compareTo(en2.getKey()) : num;
}
}
作者:
刘基军
时间:
2012-2-27 23:07
public static void method3(String s)
{
Map<Character, Integer> map = new TreeMap<Character, Integer>();
for(char c : s.toCharArray())
map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
TreeSet<Entry<Character, Integer>> ts = new TreeSet<Entry<Character, Integer>>(new EntryComp());
ts.addAll(map.entrySet());
System.out.println(map); //
System.out.println(ts); //应该打印引用ts的内容,而不是map的。实际上:ts所指向的集合对象已经按照你的要求进行了排序!
}
}
作者:
李晓俊老师
时间:
2012-2-27 23:20
汗啊,谢谢各位了
作者:
熊玖帅
时间:
2012-2-28 00:43
{:soso__8961432591078930798_3:}把14行:System.out.println(map); 改成:System.out.println(ts); 写程序看来真是马虎不得哈 有时候容易出问题的不是知识难点,反而是最简单最容易忽视的地方
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2