我有数组列表ArrayList医生,它存储存储一些医生细节的对象。每位医生都有一个独特的id字段。有没有办法在数组列表中搜索具有特定ID值的医生?
答案 0 :(得分:3)
您可以像这样在ArrayList上使用流:
Optional<Doctor> getUniqueDoctorById(List<Doctor> list, String id) {
return list.stream()
.filter(doctor -> doctor.getId().equals(id))
.findFirst();
}
在这里,您可以看到流式传输列表并过滤所有医生ID等于您要搜索的ID的医生。
答案 1 :(得分:0)
尝试这样的事情。
private static Doctor queryDoctorById(List<Doctor> doctors, int id) {
Doctor doctor = null;
for (Doctor doc : doctors) {
if (doc.id == id) {
doctor = doc;
break;
}
}
return doctor;
}
// is a sample object representing doctor
protected static class Doctor {
public String name;
public int id;
}
答案 2 :(得分:0)
最简单,但可能不是最有效的解决方案,我假设您使用setter / getters为所有字段设置“医生”,否则您将使用d.id而不是d.getId()但这不是好的做法:
我还假设ID可能包含字母和数字,并表示为字符串。如果是数字,则使用==而不是.equals
public Doctor findDoctorById(desiredID) {
for(Doctor d : doctors) {
if (d.getId().equals(desiredID) {
return d;
}
}
System.out.println("No doctors with that ID!");
return null;
}