java中定义了一个类,其中有一个对象 数组,如何比较其中任意两个对象的大小。
privateObject[]listArray;在运行时Obejct类既可以是int也可是flaot,double,string等。Objectx=listArray[...
private Object[]listArray;
在运行时Obejct类既可以是int也可是flaot,double,string等。
Object x=listArray[2];
Object y=listArray[5];
要在x<y; x=y'; x>y时,实现不同的操作。 展开
在运行时Obejct类既可以是int也可是flaot,double,string等。
Object x=listArray[2];
Object y=listArray[5];
要在x<y; x=y'; x>y时,实现不同的操作。 展开
展开全部
public static void main(String[] args) throws Exception {
System.out.println("结果:" + compare(10.3, 1.5, CompareMark.AAB));
}
public static boolean compare(Object o1, Object o2, CompareMark compareMark) throws Exception {
if ((!(o1 instanceof Comparable)) || (!(o2 instanceof Comparable))) {
throw new Exception("非基础类型无法比较!");
}
Comparable c1 = (Comparable) o1;
Comparable c2 = (Comparable) o2;
int iR = c1.compareTo(c2);
switch (iR) {
case 1:
switch (compareMark) {
case AAB:
case AABET:
return true;
default:
return false;
}
case -1:
switch (compareMark) {
case LT:
case LTET:
return true;
default:
return false;
}
default:// 0
switch (compareMark) {
case ET:
case AABET:
case LTET:
return true;
default:
return false;
}
}
}
public enum CompareMark {
/**
* 大于
*/
AAB,
/**
* 小于
*/
LT,
/**
* 等于
*/
ET,
/**
* 大于等于
*/
AABET,
/**
* 小于等于
*/
LTET
}
写来下,自己的想法不知道好不好,呵呵,感觉代码太多,最好用个工厂比较好。
System.out.println("结果:" + compare(10.3, 1.5, CompareMark.AAB));
}
public static boolean compare(Object o1, Object o2, CompareMark compareMark) throws Exception {
if ((!(o1 instanceof Comparable)) || (!(o2 instanceof Comparable))) {
throw new Exception("非基础类型无法比较!");
}
Comparable c1 = (Comparable) o1;
Comparable c2 = (Comparable) o2;
int iR = c1.compareTo(c2);
switch (iR) {
case 1:
switch (compareMark) {
case AAB:
case AABET:
return true;
default:
return false;
}
case -1:
switch (compareMark) {
case LT:
case LTET:
return true;
default:
return false;
}
default:// 0
switch (compareMark) {
case ET:
case AABET:
case LTET:
return true;
default:
return false;
}
}
}
public enum CompareMark {
/**
* 大于
*/
AAB,
/**
* 小于
*/
LT,
/**
* 等于
*/
ET,
/**
* 大于等于
*/
AABET,
/**
* 小于等于
*/
LTET
}
写来下,自己的想法不知道好不好,呵呵,感觉代码太多,最好用个工厂比较好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询