黑马程序员技术交流社区

标题: map集合中不能传comparator比较器吗? [打印本页]

作者: ajj1314    时间: 2016-6-18 23:32
标题: map集合中不能传comparator比较器吗?
import java.util.Comparator;
import java.util.TreeMap;

public class Test4 {

        /**
         * 用适当的Map集合存储5个学生的学号和姓名,并按学号的倒序将学生姓名打印出来
         */
        public static void main(String[] args) {
                        TreeMap<String, String> tm = new TreeMap<>(new Comparator<String>() {

                              @Override
                                   public int compare(String s1, String s2) {
                                          int num = s2.compareTo(s1);
                                return num == 0 ? 1 : num;
                        }
                });

                tm.put("007", "张三");
                tm.put("004", "李四");
                tm.put("005", "王武");
                tm.put("003", "周六");
                tm.put("006", "赵琦");

                System.out.println(tm);
                System.out.println(tm.get("003"));

                for (String s : tm.keySet()) {
                        System.out.println(s + tm.get(s));

                }
               
                //tm.put(key, value)
        }
}
这样打印不能通过键得到值,打印的值是null  为什么?求大神指教



作者: 牛凌霄    时间: 2016-6-19 19:44
为啥你传入比较器重写的却是compareTo()方法?
作者: 云袭    时间: 2016-6-19 21:01
哪一步打印的是null?
作者: ajj1314    时间: 2016-6-20 10:43
云袭 发表于 2016-6-19 21:01
哪一步打印的是null?

通过键打印值 的时候
作者: ajj1314    时间: 2016-6-20 10:46
云袭 发表于 2016-6-19 21:01
哪一步打印的是null?

通过键打印值的时候
作者: 何亚辉    时间: 2016-6-20 13:17
传比较器重写的应该是comparator的compare方法
作者: ajj1314    时间: 2016-6-20 15:20
牛凌霄 发表于 2016-6-19 19:44
为啥你传入比较器重写的却是compareTo()方法?

重写的是compare方法啊




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