TreeMap中是如何实现key值唯一的? javaiteratorhashmaphashcodeequals 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TreeMap都是通过compare的1 对整个TreeMap(在构造函数)提供Comparator;或者2 所有的Key都是Comparable的被你注释掉的那个方法:TreeMap<Student,String> tm = new TreeMap<Student,String>(new LenComparator());用的是方法1,即优先使用comparator,即使Key也是Comparable的由于你最终的代码,没有提供Comparator,还好Student还是Comparable的所以TreeMap使用了方法2@see java.util.TreeMap.put(K, V)@see java.util.TreeMap.compare(Object, Object) ok..但是 public int compareTo(Student s) { // TODO Auto-generated method stub// System.out.println(this.getName()+"equals "+s.getName());// int num = new Integer(this.getAge()).compareTo(s.getAge());// if(num == 0)// return new Integer(this.getName().length()).compareTo(s.getName().length());// return num; return 1; }我让它 返回1,为什么打印的结果value全部为null值啊。 全是1的话,当然找不到@see java.util.TreeMap.getEntry(Object)全是1,他遍历树的时候,会发现要找的Key比当前这个节点的Key大,应该去右面的子节点去试试运气。但是发现自己还是大,周而复始,遍历完了,还是没找到 compare结果 = 0的。所以返回null 不是键覆盖了,只是将值给覆盖了,你put同一个键的时候,接收到返回的数值是上一个与该键相关联的值.TreeMap通过键对象自身实现了自然排序(即实现了Comparable接口),然后根据实现的compareTo方法的返回值来确定唯一性以及排序性,至于将实现方法全部返回为1,楼上哥们也说清楚了,楼主想弄明白为什么会这样,就用断点查看把,看一下就清楚为什么返回的是null了 向数据库添加客户信息SQL语句出错 httpclient4.1.2做proxy里遇到的一个问题 java中怎么得到一个变量所在的行号?? 在前台页面中利用javascript移动图片后怎样在后台用java将移动后的效果生成出来? 如何生成有目录结构的jar包 日程管理系统,GUI的几个问题,麻烦大家帮忙看看 初始化顺序?? 怎么在图片上写文字?而且是中文....最好有例子..谢谢! 小问题· 构造函数、继承的SJCP的问题? Char类型转int类型时候,怎么才不是赋值ASCII码?? java虚拟机报错(分多呢,求解答)(求科普贴)
1 对整个TreeMap(在构造函数)提供Comparator;或者
2 所有的Key都是Comparable的被你注释掉的那个方法:
TreeMap<Student,String> tm = new TreeMap<Student,String>(new LenComparator());
用的是方法1,即优先使用comparator,即使Key也是Comparable的由于你最终的代码,没有提供Comparator,还好Student还是Comparable的
所以TreeMap使用了方法2@see java.util.TreeMap.put(K, V)
@see java.util.TreeMap.compare(Object, Object)
但是 public int compareTo(Student s) {
// TODO Auto-generated method stub
// System.out.println(this.getName()+"equals "+s.getName());
// int num = new Integer(this.getAge()).compareTo(s.getAge());
// if(num == 0)
// return new Integer(this.getName().length()).compareTo(s.getName().length());
// return num;
return 1;
}我让它 返回1,为什么打印的结果value全部为null值啊。