如何从对象列表中返回HashMap?

时间:2016-10-30 22:54:14

标签: java hashmap

目前,我正在尝试返回:key。使用具有50个或更多条目的(defn parent-component [] [:div (for [[group-title group-data] @data] ^{:key group-title} [child-component group-title group-data])]) 参数。

HashMap

我将Id作为键和医生对象传递为值..

我的ArrayList课很简单:

public static HashMap<String, Doctor> getDoctorHash(ArrayList<Doctor> doctorList) {

    HashMap<String, Doctor> hm = new HashMap<>();

    for(Doctor doctor : doctorList) {
        hm.put(doctor.getId(), doctor);
    }

    return hm;
}

2 个答案:

答案 0 :(得分:1)

不确定为什么要这样做,(你可以使用Java8流和filter列表作为名字),但你很接近。

public static HashMap<String, Doctor> getDoctorHash(ArrayList<Doctor> doctorList) {

    HashMap<String, Doctor> hm = new HashMap<>();

    for(int i = 0; i < doctorList.size(); i++) {
        hm.put(doctorList.get(i).getFirstName(), doctorList.get(i));
    }

    return hm;
}

或者,更简单地说

public static HashMap<String, Doctor> getDoctorHash(ArrayList<Doctor> doctorList) {

    HashMap<String, Doctor> hm = new HashMap<>();

    for(Doctor d : doctorList) {
        hm.put(d.getFirstName(), d);
    }

    return hm;
}

然后,对于某些Doctor d = doctorMap.get("firstname")

,您必须firstname

答案 1 :(得分:0)

这不是一个解决方案,但可以用来从中推导出一个

由于你还没有说明控制台的输出是什么,我无法知道你有哪些具体的错误。

尽管如此,我创建了以下代码来给自己一个想法:

public class StartingPoint {

    static String[] doctorNames = {"Potato", "Chocolate", "Something", "Name", "Unnamed"};

    public static void main(String[] args) {            

        ArrayList<Doctor> doctorList = new ArrayList<>(5);

        for (int i = 0; i < 5; i++) {
            doctorList.add(new Doctor(doctorNames[i], doctorNames[i] + " last name", String.valueOf(i)));
        }

        HashMap<String, Doctor> someHashMap = getDoctorHash(doctorList);

        for (int i = 0; i < 5; i++) {
            System.out.println("The ID of the doctor number " + String.valueOf(i + 1) + " is: ");
            System.out.println(someHashMap.get(doctorNames[i]).getId());
        }
    }

    public static HashMap<String, Doctor> getDoctorHash(ArrayList<Doctor> doctorList) {

        HashMap<String, Doctor> hm = new HashMap<>();

        for(Doctor doctor : doctorList) {
            System.out.println(doctor);
            hm.put(doctor.getId(), doctor);
        }

        return hm;
    }

}

事实证明,编译器就好像没有Doctor对象这样的东西是项目ID(作为密钥)的值。然而,可以看出,当一个人试图打印出在其定义中传递给Doctor函数的ArrayList的{​​{1}}项中的每一个的内存中的位置时,完全没问题。 我不知道背后的原因是什么。

但是,如果不是使用getDoctorHash()个对象作为值,而是使用其中一个Doctor可以通过使用其中一个方法获得,那么一切都很顺利:

String