gpt4 book ai didi

java - 使用 JDK8 Stream 如何迭代嵌套对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:45 25 4
gpt4 key购买 nike

我在我的项目中使用 JDK8 流。

我将从第三方应用程序中获取下面提到的 soap xml 响应。根据要求,我必须捕获包含 ExecutionCode 和相应 Value 的 MetaDataItem。

<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>

我不确定如何使用 JDK8 Streams 遍历对象直到 MetaDataItem。我试过了,但没有成功

在我的 JAXB 类中

 1. Response class contains "List<ProcessingResults>". 
2. Each ProcessingResult class contains the "List<StepResults>".
3. StepResult class contains the "List<DataIteam>".
4. DataItem class contains the "List<MetaDataItem>".

最佳答案

您所要做的就是应用 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());

关于java - 使用 JDK8 Stream 如何迭代嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194202/

25 4 0