gpt4 book ai didi

java - 对象列表与字符串值比较

转载 作者:行者123 更新时间:2023-12-01 06:59:11 25 4
gpt4 key购买 nike

我期望以下内容返回 true。

   public class HudsonJob {

private String name;
private String status;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}

public boolean equals(Object jobName) {
return name.toLowerCase().equals(((String)jobName).toLowerCase());
}

public int hashCode() {
return name.hashCode();
}
}

List<HudsonJob> existingJbsLst = hudsonUtil.getAllJobs(); // returns multiple HudsonJob objects in the list.

我期望返回 true 的语句是:

boolean isExistingJob=existingJbsLst.contains("AnExistingJOB");总是返回 false。

boolean isExistingJob = ExistingJbsLst.equals("AnExistingJOB"); 也返回 false。

我应该在代码中添加/更改什么才能获得预期的返回值。

最佳答案

你刹车the contract对于 equals 方法。例如:
它是对称的:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
在您的情况下, job.equals(string) 可能为 true,但 string.equals(job) 将始终为 false。

列表中可能发生的情况是元素以另一种方式进行比较:

for (Object el : list) {
if (parameter.equals(el)) {
...
}
}

这就是它不起作用的技术原因:"AnExistingJOB".equals(jobObject) 始终为 false。

编辑
顺便说一句,您的 hashCode 方法也是错误的。如果在 equals 方法中比较时忽略大小写,那么在 hashCode 中也忽略它。 Bozho 的建议可能是个好建议:IDE 会更好地生成这些方法。此外,您还可以检查 Andreas_D 的答案以了解有效的实现。

关于java - 对象列表与字符串值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863930/

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