Java 对不同对象类进行排序的泛型比较
我试图使用compareTo返回各种类型对象中最大的或最大的。这适用于整数、字符串,但当我尝试包含圆时Java 对不同对象类进行排序的泛型比较,java,generics,Java,Generics,我试图使用compareTo返回各种类型对象中最大的或最大的。这适用于整数、字符串,但当我尝试包含圆时 如何获得一个通用方法来比较所有对象?在这种情况下,圆只有一个变量,半径,可以比较 公共类比较各种对象{ 公共静态void main(字符串[]args){ 整数[]数={1,-2,3,0,-1,2,-3}; 字符串[]颜色={“蓝色”、“绿色”、“白色”、“红色”、“黑色”}; 圆圈[]圆圈={新圆圈(5.9),新圆圈(.5),新圆圈(1), 新圆(2.5),新圆(.1)}; System.
如何获得一个通用方法来比较所有对象?在这种情况下,圆只有一个变量,半径,可以比较
公共类比较各种对象{
公共静态void main(字符串[]args){
整数[]数={1,-2,3,0,-1,2,-3};
字符串[]颜色={“蓝色”、“绿色”、“白色”、“红色”、“黑色”};
圆圈[]圆圈={新圆圈(5.9),新圆圈(.5),新圆圈(1),
新圆(2.5),新圆(.1)};
System.out.println(“数字上,最大值为:“+max(numbers));
System.out.println(“按字母顺序,最大颜色为:”+max(colors));
System.out.println(“最大圆的半径为:”+max(圆);
}
公共静态T最大值(T[]列表){
T currentMax=null;
int currentMaxIndex;
对于(int i=0;i0){
currentMax=列表[j];
currentMaxIndex=j;
}
}
如果(currentMaxIndex!=i){
list[currentMaxIndex]=list[i];
列表[i]=当前最大值;
}
}
返回电流最大值;
}
}
“如何获得一种通用方法来比较所有对象?”
没有一种通用的方法来比较对象,这就是为什么首先要比较和比较。考虑一个班的学生,我可以根据身高、分数、年龄……/P>比较它们。
只需制作一个你想要的w.e概念类(比如一个圆),实现Compariable并定义Comparieto,以定义你如何比较该对象的标准。例如:
public class Circle implements Comparable<Circle> {
int diameter;
//constructor
public int compareTo(Circle c) {
if(c.diameter> this.diameter){
return 1;
}else if ....
公共类循环实现可比性{
内径;
//建造师
公共整数比较(c圈){
如果(c.直径>此.直径){
返回1;
}否则,如果。。。。
您必须在Circle中实现Compariable接口。您可以直接使用Collections.max
。哪个版本的Java?您的方法不关心对象是整数、字符串、圆、香蕉还是鱼。唯一重要的是,它们都是Compariable的实例,因此始终可以相互比较。顺便说一句,您重新实现Collections.max()
()的原因是什么?为什么返回数组的max元素的方法会修改此数组?大概您的Circle类需要实现Comparable
,然后返回比较半径的结果。