Java 8如何遍历嵌套的对象列表

时间:2018-11-13 19:35:04

标签: java

我是Java 8的新手,我有一个响应对象,其中包含一个详细对象列表,并且详细对象包含一个原因对象列表,其中原因对象具有原因代码。我试图从响应对象迭代到原因对象,并搜索是否有任何等于给定键的原因代码。您能否以最小的复杂性帮助您在Java 8中做到这一点。下面是Java 7中的示例方法,不是您最好的方法。

 if(response != null && CollectionsUtil.isNotEmpty(response.getDetails())) {

            List<Detail> details = response.getDetails();
            for(Detail det : details) {
                if(CollectionsUtil.isNotEmpty(det.getReasons())) {                  
                    for(Reason reason: det.getReasons()) {
                        if(StringUtils.equalsIgnoreCase("ABC", reason.getReasonCode())) {
                            ///////////call an external method
                        }
                    }

                    }
                }
            }

1 个答案:

答案 0 :(得分:3)

假设getReasons()返回一个List

details.stream().
     flatMap(e -> e.getReasons().stream()).
     filter(reason -> StringUtils.equalsIgnoreCase("ABC", reason.getReasonCode())).
     forEach(System.out::println);

System.out::println替换为要调用的方法的位置。另外请注意,我删除了CollectionsUtil.isNotEmpty(det.getReasons())的支票,好像列表为空,不会有任何作用