Java 如何在包含映射的ArrayList上循环?

Java 如何在包含映射的ArrayList上循环?,java,rest-assured,web-api-testing,Java,Rest Assured,Web Api Testing,目前,我使用rest-assured访问端点,然后通过ArrayList和HashMap存储任何JSON数据匹配项 我可以看到我收到了一个响应,但是当ArrayList包含一个内部HashMap时,我如何循环它呢 从下面的JSON数据可以看出,我希望输出存储在ArrayList中的所有值/匹配项 我的代码: public void apiTest() { String position = "Attacker"; String role = "PLAYER"; Resp

目前,我使用rest-assured访问端点,然后通过ArrayList和HashMap存储任何JSON数据匹配项

我可以看到我收到了一个响应,但是当ArrayList包含一个内部HashMap时,我如何循环它呢

从下面的JSON数据可以看出,我希望输出存储在ArrayList中的所有值/匹配项

我的代码:

public void apiTest() {
    String position = "Attacker";
    String role = "PLAYER";

    Response response = given()
            .spec(footballCompetitions_requestSpecification)
            .when().get(EndPoint.TEAMS + EndPoint.SQUAD);

    ArrayList<Map<String, ?>> allPlayers = response.path
            ("squad.findAll { it.role == '%s' }.findAll  { it.position == '%s' }", position, role);

首先迭代列表,然后迭代地图:

for (Map<String, ?> map : allPlayers) {
  for (String key : map.keySet()) {
    Object player = map.get(key);
    // ...
  }
}
for(地图地图:所有玩家){
for(字符串键:map.keySet()){
对象播放器=map.get(键);
// ...
}
}

如果您使用的是Java 8或更高版本,则只需首先在
列表上迭代,然后在
映射上使用lambda表达式进行嵌套迭代:

public static void main(String[] args) {
    List<Map<String, ?>> jsonList = new ArrayList<>();

    Map<String, String> mapOne = new HashMap<String, String>();

    mapOne.put("id", String.valueOf(66));
    mapOne.put("area", "Some Area");

    jsonList.add(mapOne);

    jsonList.forEach(map -> {
        map.forEach((key, value) -> {
            System.out.println(key + ": " + value);
        });
    });
}
publicstaticvoidmain(字符串[]args){
List jsonList=new ArrayList();
Map mapOne=newhashmap();
mapOne.put(“id”,String.valueOf(66));
mapOne.put(“区域”、“某些区域”);
jsonList.add(mapOne);
jsonList.forEach(映射->{
map.forEach((键,值)->{
System.out.println(键+“:”+值);
});
});
}

您需要注意的是
字符串
表示
,因为它在您的代码中是
映射
,在我的示例中是
映射
,如果您直接使用上面示例的
System.out.println(key+“:”+value),可能会导致什么问题

您需要在列表上进行迭代,并在映射上进行嵌套迭代。对于映射,使用entrySet()迭代更有效:是的,但我认为对于Java初学者来说,使用keySet()更直观,因为在迭代中进行迭代本身可能会让人困惑。@SamP没问题,我很高兴提供了一些有用的东西;-)
public static void main(String[] args) {
    List<Map<String, ?>> jsonList = new ArrayList<>();

    Map<String, String> mapOne = new HashMap<String, String>();

    mapOne.put("id", String.valueOf(66));
    mapOne.put("area", "Some Area");

    jsonList.add(mapOne);

    jsonList.forEach(map -> {
        map.forEach((key, value) -> {
            System.out.println(key + ": " + value);
        });
    });
}