java - 循环嵌套对象
问题描述
我正在与 Jackson 合作,将 json 数据解析为 Java 中的一系列嵌套对象。
然后我需要遍历一些嵌套对象,并想知道您是否可以访问嵌套对象列表以直接循环。
目前我只能通过嵌套 for 循环来访问嵌套对象/嵌套列表。
RootNode
有一个List<VisibleEntities>
哪个又有一个Dto
。Dto 有List<Segments>
一个属性 String transfer 。
看起来有点像这样:
目前我通过以下方式访问它:
for (VisibleEntities v: rootNode.visibleEntities) {
for (Segments s: v.dto.segments) {
if (s.transfer != null) {
System.out.println(s.transfer.getName());
}
}
}
有没有办法循环 rootNode.visibleEntities.dto.segments 并直接打印 dto.segments.transfer (如果不为空)?
解决方案
如果您的数据结构为嵌套循环,那么您将需要遍历这两个循环。如果你想缩短它,你可以应用一些 Java8 流。
import java.util.ArrayList;
public class NestedStreamTest {
public static void main(String[] args) {
//Following is for example data
var nest = new ArrayList<ArrayList<Integer>>();
for(int i = 0; i < 10; i++) {
var list = new ArrayList<Integer>();
nest.add(list);
for(int j = 0; j < 10; j++)
if(j % 2 == 0)
list.add(j);
else
list.add(null);
}
//Actual looping starts here
nest.stream() //Loop through the nest
.flatMap(list -> list.stream()) //Loop through each list in the nest
.filter(value -> value != null) //Only allow values which are not null to continue
.forEach(value -> System.out.println(value.toString())); //Print each filtered value
}
}
推荐阅读
- android - Facing error in converting byte array to vector of float in JNI
- java - StackOverflowError: null in both side relationship
- python - 如何在没有for循环的字典中搜索张量的id
- r - 在 R 中编写函数
- functional-programming - 检查字符串是否包含浮点数或整数
- javascript - Why does mongoose run asynchronously when creating and updating a document?
- ruby-on-rails - 如何让我的 API 在 Ruby 中返回多个值
- c - 如何使用 realloc 改变内存大小?
- node.js - AWS lambda - "errorMessage": "Apple"
- javascript - how do i create a new object based off an array and another object?