gpt4 book ai didi

java - 检查包含对象的列表中是否存在值的条件,

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:23 29 4
gpt4 key购买 nike

我正在尝试编写一个 if 条件来检查一个值是否存在于包含许多对象的列表中,这是我的代码:

List<TeacherInfo> teacherInfo=ServiceManager.getHelperService(TeacherManagementHelper.class, request, response).getTeacherInfoId();
if(teacherInfo.contains(inputParam))
{
out2.println("<font color=red>");
out2.println("Id Not Available");
out2.println("</font>");
}
else
{
out2.println("<font color=green>");
out2.println("Id Available");
out2.println("</font>");
}

在执行第一句 getTeacherInfoId() 方法后成功返回一个对象列表,在这些对象中我想检查任何对象是否具有与 inputParam 相同的值。我上面的代码对吗?如果错了请帮助我。

最佳答案

contains(Object o) 在内部基于列表对象和输入之间的 equalsas stated by the doc .

既然你说 inputParam 是一个整数,那么你的代码的当前状态就不能工作,因为你将一个整数与 TeacherInfo 对象,所以它们永远不会相等。我相信您想将 inputParamTeacherInfo 对象的一个​​特定字段进行比较。

如果您使用的是 Java 8,则可以使用流 API 而不是 contains():

List<TeacherInfo> teacherInfo=ServiceManager.getHelperService(TeacherManagementHelper.class, request, response).getTeacherInfoId();
if (teacherInfo.stream().anyMatch(ti -> ti.getId() == inputParam)) {
// contains the id
} else {
// does not contain the id
}

对于以前的 Java 版本,contains() 的替代方法是遍历您的列表并手动将您的整数与 TeacherInfo 的字段进行比较:

private static boolean containsTeacherId(List<TeacherInfo> teacherInfos, int id) {
for (TeacherInfo ti : teacherInfos) {
if (ti.getId() == inputParam) { // I used getId(), replace that by the accessor you actually need
return true;
}
}
return false;
}

然后:

List<TeacherInfo> teacherInfo=ServiceManager.getHelperService(TeacherManagementHelper.class, request, response).getTeacherInfoId();
if (containsTeacherId(teacherInfo, inputParam)) {
// contains the id
} else {
// does not contain the id
}

注意:如果除了 ID 本身不需要其他信息,我宁愿建议从名为 getTeacherIds() 的方法返回 ID 列表,尤其是当此信息来自数据库时。

关于java - 检查包含对象的列表中是否存在值的条件,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336169/

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