黑马程序员技术交流社区

标题: java中的怎么比较两个object(不知道类型)值的大小 [打印本页]

作者: Changer_s    时间: 2013-5-22 17:37
标题: java中的怎么比较两个object(不知道类型)值的大小
求解决,我困惑了很久,最好把具体代码写出来,谢谢
作者: 年轻的棒棒    时间: 2013-5-22 17:49
用Comparable类中的public int compareTo(Object other){};
public class Client implements Comparable<Object>{
  private String id;
  private String name;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int compareTo(Object client) {
Client c=(Client)client;
return id.compareTo(c.getId());
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
作者: 袁梦希    时间: 2013-5-22 17:56
如果问题没解决,请继续追问
作者: Changer_s    时间: 2013-5-22 18:20
本帖最后由 Changer_s 于 2013-5-22 18:21 编辑
年轻的棒棒 发表于 2013-5-22 17:49
用Comparable类中的public int compareTo(Object other){};
public class Client implements Comparable{
  ...

你这是百度的吧?
我的意思是说:
比如:
比较:int a= 3;double b =3.2;String c = “3.3”;
我想排序,比较大小,你可以帮我试试吗?  结果:c> b>a

或者比较这个也行:int a= 3;double b =3.2
我想排序,比较大小,你可以帮我试试吗?  结果:b>a ,

前提是我不确定对象到底是什么类型,那该怎么办?

作者: 年轻的棒棒    时间: 2013-5-22 19:59
其实就是一个实现这个接口,对其中的方法进行重写,最基本的还是类型转换以后比较的。我这里转成double,你也可以转成其他类型的!
interface compareForNumber {
        public double compareTwoNumber(Object obj_1, Object obj_2);
}
public class Test1 implements compareForNumber {
        public double compareTwoNumber(Object obj_1, Object obj_2) {
                double value_1;
                double value_2;
                try {
                        value_1 =Double.parseDouble(obj_1.toString());
                         value_2 = Double.parseDouble(obj_2.toString());
                        if (value_1 > value_2) {
                                return value_1;
                        } else if (value_1 < value_2) {
                                return value_2;
                        } else if (value_1 == value_2) {
                                return 0;
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return 0;
        }

        public static void main(String[] args) {
                System.out.println(new Test1().compareTwoNumber("3.3", 2));// 传入两个数字比较大小
        }
}
作者: Miss小强    时间: 2013-5-22 20:00
年轻的棒棒 发表于 2013-5-22 17:49
用Comparable类中的public int compareTo(Object other){};
public class Client implements Comparable{
  ...

这代码有问题。。。必须要对比较类型进行一致性判断,不是同一种类型根本无法比;
作者: Miss小强    时间: 2013-5-22 20:02
思路:对int型进行强转,都变成double;
这样就可以比较了;
用快速排序或者冒泡排序解决;
捷径:Arrays工具类,sort排序方法;
作者: 袁梦希    时间: 2013-5-24 01:38
楼主你好,如果问题以解决,请修改分类,谢谢合作。






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