日期:2014-05-20  浏览次数:20712 次

关于TreeSet 自定义类比较问题
求大神告诉解决TreeSet 自定义类 比较问题,因为TreeSet要添加自定义类时 需要将这个类实现一个Comparable的接口 或是在创建TreeSet对象的时候 传入一个比较器,但是因为这两个接口要重写的方法的返回值都是int类型的。。。所以小弟疑惑要是比较整数的就可以 ,但是要比较double类型或其它类型 要怎么比较呢,因为我觉得如果把double类型强制转换为int类型的话这样不好。。。求大神给点解题思路

------解决方案--------------------
返回的int型不是这个意思  它只是一个标志 通常大于时返回一个正数,小于时返回一个负数,等于时返回零 这三个数据treeset自己能认识 他就像定的一个标准
------解决方案--------------------
贴代码 不理解你的意思
------解决方案--------------------


 public int compareTo(Object o) {    
    if(o instanceof Book1){          
  Book1 b=(Book1)o;  
if(this.price>b.price){
return 1;
}
if(this.price<b.price){
return -1;
}else{
return 0;
}             
}        


------解决方案--------------------
String 已实现comparable


 public int compareTo(Book1 book) {               
  return this.price.compareTo(book.price);       
}        



上面的代码也有问题,因为你跟object比较是没意义的



 public int compareTo(Book1 book) {             
  Book1 b=(Book1)o;  
if(this.price>b.price){
return 1;
}
if(this.price<b.price){
return -1;
}else{
return 0;         
}        



------解决方案--------------------
累死 我不是比较的price属性么?
------解决方案--------------------
我是举个例子 如果price是String类型