我是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
}
}
}
}
}
答案 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())
的支票,好像列表为空,不会有任何作用