关于equals方法
项目作业中,school类要求实现添加、删除班级的方法。于是我先写了个判断一个班级是否已经存在的方法,如下:
public boolean panduan(Banji banji) {
Collection<Banji> col = schoolMap.values();
for (Banji bj : col) {
if (bj.equals(banji))
return true;
break;
}
return false;
}
(注:Map<String,Banji> schoolMap=new HashMap<String,Banji>();)
然后写了添加、删除班级的方法,通过调用上面的方法判断待处理的参数是否已存在,如下:
// 添加班级
public void addBanji(Banji banji) {
if (panduan(banji))
System.out.println("添加失败!班级已存在!");
else {
schoolMap.put(banji.getClassName(), banji);
System.out.println("添加成功!");
}
}
// 删除班级
public void deleteBanji(Banji banji) {
if (panduan(banji)) {
schoolMap.remove(banji.getClassName());
System.out.println("删除成功!");
} else
System.out.println("删除失败!班级不存在!");
}
接着进行测试。创建了三个不同的班级进行添加、删除操作:
Banji bj1=new Banji("s001","一班");
Banji bj2=new Banji("s002","二班");
Banji bj3=new Banji("s003","三班");
然而测试结果并不理想。执行添加操作时没有问题,但执行删除时,bj1成功删除,但bj2和bj3删除失败,判断方法中的equals方法返回的是false。三个班级都是添加成功了的,不明白为什么会这样。
12
收起
正在回答
1回答
你需要重写 hashcode以及equals两个方法
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星