Java如何访问数组中保存的哈希映射数据

时间:2018-02-04 14:59:34

标签: java arrays hashmap

学习Java并且已经弄清楚如何在数组中存储hashmap。但我无法弄清楚如何获取存储的数据。这是我正在做的简化版本。我已经显示了特定的数组项,但是如何访问存储在数组中的哈希映射?

import java.util.*;

public class HelloWorld {
  public static void main(String[] args) {
    Map<String, String> custOrder = new HashMap<String, String>();
    List ordersPlaced = new ArrayList();

    custOrder.put("colour", "blue");
    custOrder.put("manu", "bmw");
    custOrder.put("body", "4x4");

    ordersPlaced.add(custOrder);

    custOrder = new HashMap();

    custOrder.put("colour", "green");
    custOrder.put("manu", "merc");
    custOrder.put("body", "saloon");

    ordersPlaced.add(custOrder);   


    System.out.println(ordersPlaced.get(0).toString());
  }
}

希望这是有道理的。提前致谢

尼尔

2 个答案:

答案 0 :(得分:4)

您已经在访问它了。

为了获得地图项目的迭代,您可以:

ordersPlaced.get(0).forEach((key, value) -> {
    System.out.println("Key is: " + key + ", Value is: " + value);
});

或者,早于Java 8,类似于:

for (Map.Entry<String, String> entry : ordersPlaced.get(0).entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
}

请注意,您应该避免使用原始类型列表。相反,你应该:

List<Map<String, String>> ordersPlaced = new ArrayList<>(); 

然后:

Map<String, String> m = ordersPlaced.get(0);

答案 1 :(得分:3)

你已经知道了。

您可以通过编写

来取回存储的地图
Map<String, String> placedCustOrder = ordersPlaced.get(0);

使用List时避免使用原始类型。将您的列表声明为

List<Map<String, String>> ordersPlaced = new ArrayList<>();
  

我想知道如何访问位于0的数组中存储的数据的颜色

因为你按照我在第1行所说的那样得到了地图

Map<String, String> placedCustOrder = ordersPlaced.get(0);
String colorVal = placedCustOrder.get("colour");

我强烈建议您在继续进行之前查看Map文档。