黑马程序员技术交流社区

标题: 程序有错误求解释、、、 [打印本页]

作者: 赵国刚    时间: 2013-8-11 11:41
标题: 程序有错误求解释、、、
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>(
         new Comparator<Map.Entry<Character,Integer>>(){  
            
              public int compare(Map.Entry<Character,Integer> me1, Map.Entry<Character,Integer> me2){
                  int mun = me1.getValue().compareTo(me2.getValue());
                  if(mun==0)
                     return me1.getKey().compareTo(me2.getKey());
                  return mun;
              }
        });
new TreeMap然后以匿名内部类的形式传了一个比较器进去,编译报错:
找不到符号
符号: 构造函数 TreeMap(<匿名 java.util.Comparator<java.util.Map.Entry<java.lang.Character,java.lang.Integer>>>)
位置: 类 java.util.TreeMap<java.lang.Character,java.lang.Integer>
       TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>(
作者: longlangcx    时间: 2013-8-11 15:47
TreeMap是根据key进行排序的,所以你要做的是让key具有比较性。

你new TreeMap<Character,Integer>();说明这个TreeMap的key是一个Character,你要做的就是让其中保存的Character具有比较性。
因此你传给构造方法的比较器应该是 new Comparator<Character>(){}而不是 new Comparator<Map.Entry<Character,Integer>>(){}。
作者: 龚首道    时间: 2013-8-11 16:40
您必须得定义一个带参数的构造函数。

TreeMap的构造函数:
一、TreeMap()
使用键的自然顺序构造一个新的、空的树映射。
二、TreeMap(Comparator<? super K> comparator)
构造一个新的、空的树映射,该映射根据给定比较器进行排序。(您这里用的是这个构造函数,所以得自己定义一个才行)
三、TreeMap(Map<? extends K,? extends V> m)
构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2