gpt4 book ai didi

java - .equals() 方法来检测重复的数组元素(尝试过@Override)

转载 作者:行者123 更新时间:2023-12-01 15:11:27 28 4
gpt4 key购买 nike

我有一个简单的循环来检查是否有重复的结果,其中 Studresults 保存我的 results , result 是给予该方法的对象结果, r 是数组中的当前对象。我在整个程序中成功地使用了这种方法,尽管在这种情况下它不起作用,即使当我调试结果和 r 时,完全相同,有人知道为什么会这样吗?我已经按照其他答案中的建议尝试过@Override,但无济于事。

我试图通过抛出异常来停止重复的数组元素。

for(Result r : studresults)
{
if(r.equals(result))
{
return false;
}
}

编辑好,这是整个类(class)>

package ams.model;

import java.util.ArrayList;
import java.util.Arrays;

import ams.model.exception.EnrollmentException;

public abstract class AbstractStudent implements Student {
private int studentId;
private String studentName;
private ArrayList<Course> studcourses = new ArrayList<Course>();
private ArrayList<Result> studresults = new ArrayList<Result>();


public AbstractStudent(int studentId, String studentName) {
this.studentId = studentId;
this.studentName = studentName;

}


public String getFullName() {


return studentName;
}


public int getStudentId() {


return studentId;
}


public Result[] getResults() {

Result[] res = studresults.toArray(new Result[0]);
if(res.length > 0 )
{
return res;
}
return null;

}


public boolean addResult(Result result)
{
for(Result r : studresults)
{
if(r.equals(result))
{
return false;
}
}

studresults.add(result);
return true;
}

public void enrollIntoCourse(Course c)
{
//for re-enrollment
if(studcourses.contains(c))
{
studcourses.remove(c);
studresults.clear();
}
studcourses.add(c);
}

public void withdrawFromCourse(Course c) throws EnrollmentException
{
if(studcourses.size() > 0)
{
studcourses.remove(c);
}
else
throw new EnrollmentException();
}
public Course[] getCurrentEnrolment()
{
return studcourses.toArray(new Course[0]);
}


public abstract int calculateCurrentLoad();


public int calculateCareerPoints() {
// TODO Auto-generated method stub
return 0;
}

public String toString()
{
return studentId + ":" + studentName +":" + calculateCurrentLoad();
}

}

最佳答案

您是否已重写 Result 中的 hashCode 方法?
如果您覆盖 equals,则还必须覆盖 hashCode 方法,以允许您为相似对象(具有相同值但实际上不同对象实例的对象)返回相同的哈希码)。

我认为 hashcode 的默认实现将为不同的对象实例返回不同的值,即使它们具有相同的值。

关于java - .equals() 方法来检测重复的数组元素(尝试过@Override),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com