如何从HashMaps的ArrayList获取特定值

时间:2017-03-14 22:22:03

标签: java arraylist hashmap iteration

我已经创建了一个HashMaps的ArrayList,我知道如何获取列表中所有HashMaps的所有键和值,但后来我决定让它变得复杂并迭代通过ArrayList并获得特定的HashMap值(基于键) )。我不知道该怎么做。

如何修改constructor(p1 = 'Default Variable',p2 = 'Default Variable',p3 = 'Default Variable',p4 = 'Default Variable')方法以仅从所有哈希映射中获取printArrayListid值?

现在我有以下示例:

sku

2 个答案:

答案 0 :(得分:1)

您对arrayList的迭代器是正确的。要从地图中检索值,只需将密钥提供给条目的“get”函数即可。由于您的地图具有“对象”值的“字符串”键,因此您可以在其上使用“toString()”从您的密钥返回的对象中获取字符串。

public static void printArrayList(ArrayList<Map<String, Object>> arrayList) {

    for (Map<String, Object> entry : arrayList) {
        String myID = entry.get("id").toString();
        String mySKU = entry.get("sku").toString();
        System.out.print("id:" + myID + " sku: " + mySKU);
        System.out.println("-------------------");
    }
}

答案 1 :(得分:0)

user681574似乎已经回答了你的问题,但我只是添加一个Java8示例代码,根据需要做同样的事情,使用流

public static void printArrayList(ArrayList<Map<String, Object>> arrayList) {
    arrayList.stream() //stream out of arraylist
        .forEach(map -> map.entrySet().stream() //iterate through each map in the list, create stream out of maps' entryset
            .filter(entry -> entry.getKey().equals("id") || entry.getKey().equals("sku")) //filter out only entries that we need (where key is "id" or "sku")
            .forEach(idOrSku -> System.out.println(idOrSku.getKey() + ":" + idOrSku.getValue()))); //Iterate through the id/sku entries and print them out just as we want to
}