报这个错误是怎么回事啊Exception in thread "main" java.lang.NullPointerException: Cannot invoke "src.Student.getID()" because "student1" is null
时间: 2023-07-06 07:40:53 浏览: 126
详解Java中NullPointerException异常的原因详解以及解决方法
这个错误的原因是您在比较器 MyCompareTor 中获取 Student 对象时,可能会得到空值,导致在调用 Student 对象的 getID() 方法时出现了空指针异常。
为了解决这个问题,您可以在比较器中添加 null 值的检查,如下所示:
```
class MyCompareTor implements Comparator<String> {
TreeMap<String, Student> map;
public MyCompareTor() {
}
public MyCompareTor(TreeMap<String, Student> map) {
this.map = map;
}
@Override
public int compare(String s1, String s2) {
Student student1 = map.get(s1);
Student student2 = map.get(s2);
if (student1 == null || student2 == null) {
// 如果有空值,则认为它们相等,不进行排序
return 0;
}
int ID1 = Integer.parseInt(student1.getID());
int ID2 = Integer.parseInt(student2.getID());
// 按学号从大到小排序
return ID2 - ID1;
}
}
```
这样,如果出现空值,就不会再调用空对象的方法,避免了空指针异常。
阅读全文