求大神告诉解决TreeSet 自定义类 比较问题,因为TreeSet要添加自定义类时 需要将这个类实现一个Comparable的接口 或是在创建TreeSet对象的时候 传入一个比较器,但是因为这两个接口要重写的方法的返回值都是int类型的所以小弟疑惑要是比较整数的就可以 ,但是要比较double类型或其它类型 要怎么比较呢,因为我觉得如果把double类型强制转换为int类型的话这样不好求大神给点解题思路
调试欢乐多
import java.util.TreeSet;//1. 自定义书类,在TreeSet中存储一批书,按照价格顺序输出。
class Book1 implements Comparable{
int id;
String name;
double price;
public Book1(int id,String name,double price){
this.id=id;
this.name=name;
this.price=price;
}
@Override
public int compareTo(Object o) {
if(o instanceof Book1){
Book1 b=(Book1)o;
return this.price-b.price;
}
return 0;
}
@Override
public String toString() {
return this.id+"-"+this.name+"-"+this.price;
}
}
public class Test1 {
public static void main(String[] args) {
TreeSet set=new TreeSet();
set.add(new Book1(1,"java思想" , 70 ));
set.add(new Book1(2,"java核心技术" , 64));
set.add(new Book1(3,"java基础" , 40));
set.add(new Book1(4,"深入javaweb" , 34 ));
set.add(new Book1(5,"web" , 34.1 ));
System.out.println(set);
}}这里比较价格是double类型的 怎么比较
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;
}
}
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;
}
return this.price.compareTo(book.price);
} 这个能行吗,price有compareTo()方法吗
记住一点,只要是对象就能用compareTo方法比较
public int compareTo(Object o) {
if(o instanceof Book1){
if(your rules){
return 1;
}if(your rules){
return -1;
}
}
return 0;
}