关于equals方法

关于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。三个班级都是添加成功了的,不明白为什么会这样。
		
	


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你需要重写  hashcode以及equals两个方法

  • 之雪 提问者 #1
    嗯······我多试了几次,发现和hashcode和equals无关。是我把if后面的break写错位置了,导致循环没有重复运行。所以删除bj1可以,删除bj2和bj3就会失败。但还是感谢你的回答。
    2020-05-29 16:10:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师