我在项目中使用JDK8流。
从第三方应用程序中,我将获得下面提到的soap xml响应。根据要求,我必须捕获包含ExecutionCode和相应Value的MetaDataItem。
Pageable
我不确定如何使用JDK8 Streams遍历对象直到MetaDataItem。我尝试过但对我没有运气
在我的JAXB类中
<Response>
<ProcessingResults>
<Identifier>identifier-A</Identifier>
<StepResult>
<Identifier>device</Identifier>
<DataItem>
<Identifier>key</Identifier>
<MetaData>
<MetaDataItem>
<Name>ExecutionCode</Name>
<Value>0</Value>
</MetaDataItem>
</MetaData>
</DataItem>
</StepResult>
</ProcessingResults>
</Response>
答案 0 :(得分:2)
您要做的就是应用flatMap
运算符序列来获得所需的内容。看起来就是这样
List<MetaDataItem> metaDataItms = response.getProcessingResult().stream()
.flatMap(pr -> pr.getStepResults().stream())
.flatMap(sr -> sr.getDataItms().stream())
.flatMap(ditm -> ditm.getMetaDataItems().stream())
.collect(Collectors.toList());
答案 1 :(得分:2)
好像您需要Stream.flatMap
。试试这个:
List<MetaDataItem> list=
response.getProcessingResult().stream()
.map(ProcessingResult::getStepResults).flatMap(Collection::stream)
.map(StepResult::getDataItms).flatMap(Collection::stream)
.map(DataItem::getMetaDataItems).flatMap(Collection::stream)
.collect(Collectors.toList());