Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对不同对象类进行排序的泛型比较_Java_Generics - Fatal编程技术网

Java 对不同对象类进行排序的泛型比较

Java 对不同对象类进行排序的泛型比较,java,generics,Java,Generics,我试图使用compareTo返回各种类型对象中最大的或最大的。这适用于整数、字符串,但当我尝试包含圆时 如何获得一个通用方法来比较所有对象?在这种情况下,圆只有一个变量,半径,可以比较 公共类比较各种对象{ 公共静态void main(字符串[]args){ 整数[]数={1,-2,3,0,-1,2,-3}; 字符串[]颜色={“蓝色”、“绿色”、“白色”、“红色”、“黑色”}; 圆圈[]圆圈={新圆圈(5.9),新圆圈(.5),新圆圈(1), 新圆(2.5),新圆(.1)}; System.

我试图使用compareTo返回各种类型对象中最大的或最大的。这适用于整数、字符串,但当我尝试包含圆时


如何获得一个通用方法来比较所有对象?在这种情况下,圆只有一个变量,半径,可以比较

公共类比较各种对象{
公共静态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
,然后返回比较半径的结果。