With regard to the binarySearch use of the Collections class, why binarySearch returns a negative number and throws an exception to solve the problem

Student.java

private int age;
private String name;

public Student(int age, String name){
    this.name = name;
    this.age = age;
}

public void setAge(int age) {
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public String toString(){
    return "age:" + age + "\t" + "Name:" + name;
}

Main.java

public class Main {

public static void main(String[] args) {
    Student stu1 = new Student(48, "jre");
    Student stu2 = new Student(25, "JIe");
    Student stu3 = new Student(47, "Lil");
    Student stu4 = new Student(40, "Lilith");
    Student stu5 = new Student(20, "Jack");

    LinkedList linkedList = new LinkedList();
    linkedList.add(stu5);
    linkedList.add(stu4);
    linkedList.add(stu3);
    linkedList.add(stu2);
    linkedList.add(stu1);

    Collections.sort(linkedList, (Student o1, Student o2) ->{
        if (o1.getAge() > o2.getAge()){
            return 1;
        }else if (o1.getAge() == o2.getAge()){
            return 0;
        }else
            return -1;
    });

    int index = Collections.binarySearch(linkedList, stu2);
    System.out.println("Index:" + index);
    System.out.println(":" + linkedList.get(index));

    Iterator it = linkedList.iterator();
    it.forEachRemaining(e -> System.out.println(e));
}

}

Mar.03,2021

class conversion error?

private static <T>
    int indexedBinarySearch(List<? extends Comparable<? super T>> list, T key) {
        int low = 0;
        int high = list.size()-1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            Comparable<? super T> midVal = list.get(mid);
            int cmp = midVal.compareTo(key);

            if (cmp < 0)
                low = mid + 1;
            else if (cmp > 0)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found
    }

int index = Collections.binarySearch (linkedList, stu2);
Student requires implements Comparable interface

Menu