搜索ArrayList以查找具有特定字段值的对象

时间:2016-12-08 19:06:04

标签: java search arraylist

我有数组列表ArrayList医生,它存储存储一些医生细节的对象。每位医生都有一个独特的id字段。有没有办法在数组列表中搜索具有特定ID值的医生?

3 个答案:

答案 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;
}