今天学到Arrays的binarySearch方法,试着用自己定义的Father类作为数组的元素,类中有一个int age和String name,然后我想用binarySort搜索数组中的一个Father类对象,运行后报错,想问问这个方法可以这么用吗?
public class test4 {
public static void main(String[] args) {
Father[] arr = new Father[4];
Father fa = new Father(3,"aassdfasg");
arr[0] = fa;
arr[1] = new Father(2,"gdf");
arr[2] = new Father(5,"dada");
arr[3] = new Father(1,"qghdfg");
Arrays.sort(arr, new Comparator<Father>() {
@Override
public int compare(Father o1, Father o2) {
return o1.getAge() - o2.getAge();
}
});
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr, fa));
}
}
Exception in thread "main" java.lang.ClassCastException: class test.Father cannot be cast to class java.lang.Comparable (test.Father is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap')
at java.base/java.util.Arrays.binarySearch0(Arrays.java:2232)
at java.base/java.util.Arrays.binarySearch(Arrays.java:2174)
at test.test4.main(test4.java:25)