public class Test implements Comparable <Test>{
String name;
int age;
int salary;
public Test(String name, int age, int salary){
this.name = name;
this.age = age;
this.salary = salary;
}
public int compareTo(Test newTest){
if (this.name.compareTo(newTest.name) > 0){
return 1;
} else if(this.name.compareTo(newTest.name) < 0){
return -1;
} else{
return 0;
}
}
public static void main(String[] args){
Test Albert = new Test("Albert", 19, 100);
Test James = new Test("James", 16, 50);
if (Albert.compareTo(James) == -1){
System.out.println("Albert Comes first");
} else if (Albert.compareTo(James) == 1){
System.out.println("James Comes first");
} else{
System.out.println("It's a tie");
}
int[] testArray = new int[2];
testArray[0] = Albert.age;
testArray[1] = James.age;
Collections.sort(testArray, new TestComparator());
}
}
我创建了一个名为TestComparator的比较器,由于某种原因,它不能使用Collections.sort。我不确定为什么它不起作用。有任何想法吗?我也试过没有工作的Array.sort。任何建议将不胜感激。
答案 0 :(得分:0)
Collections.sort()
适用于List<Integer>
,而非数组。
Arrays.sort()
仅适用于int[]
。
将数组更改为Integer[]
类型,您应该能够使用使用Arrays.sort()
的{{1}}版本。
答案 1 :(得分:0)
对于上述计划。你只需要使用Arrays.sort(testArray);
public static void main(String[] args){
Test Albert = new Test("Albert", 19, 100);
Test James = new Test("James", 16, 50);
if (Albert.compareTo(James) == -1){
System.out.println("Albert Comes first");
} else if (Albert.compareTo(James) == 1){
System.out.println("James Comes first");
} else{
System.out.println("It's a tie");
}
int[] testArray = new int[2];
testArray[0] = Albert.age;
testArray[1] = James.age;
Arrays.sort(testArray); //You are just using int array so no need of Collections.sort
for(int temp: testArray){
System.out.println("Age :: " + temp);
}
//Collections.sort(testArray, new );
}
}
如果你想对对象进行排序,那么你必须使用类似的接口,并根据你在override compareTo方法中实现的内容进行排序。
你可以从下面的链接更好地了解comprable和comparaor。 Java Object Sorting Example (Comparable And Comparator)
答案 2 :(得分:0)
代码行
Collections.sort(testArray, new TestComparator());
应该抛出编译错误,因为Collections类中没有这样的排序方法。
使用Arrays.sort(testArray)
代替;它将按升序排序数组。