关于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 星