java - 在java中展平嵌套列表
问题描述
在下面的代码片段中,如何使用 java 8 流 API 以扁平方式打印列表?
public class MainClass {
public static void main(String[] args) {
List<Employee> list = new ArrayList<>();
List<Address> jAddress = new ArrayList<>();
jAddress.add(new Address("Victory Road 1", 10101));
jAddress.add(new Address("Victory Road 2", 101011));
list.add(new Employee("John", 1, jAddress));
List<Address> aAddress = new ArrayList<>();
aAddress.add(new Address("Cross road", 40101));
list.add(new Employee("Alex", 2, aAddress));
}
}
我想以以下格式打印列表。
["Jhon", 1, "victory road 1", 110220]
["Jhon", 1, "victory road 2", 101011]
["Alex", 2, "Cross road", 40101]
解决方案
似乎需要创建一个原始列表/数组,包括来自Employee
and的字段Address
(假设这些类中存在适当的 getter):
List<List<Object>> flattened = list.stream()
.flatMap(emp -> emp.getAddresses().stream()
.map(addr -> Arrays.asList(
emp.getName(), emp.getId(),
addr.getAddress(), addr.getPostalCode()
))
)
.collect(Collectors.toList());
flattened.forEach(System.out::println); // should print desired result
推荐阅读
- r - 升级到 OSX Catalina 后,R/Rstudio 中的 rJava 加载失败
- javascript - 未捕获的 ReferenceError:caiet 未定义
- javascript - 在孩子移除时为父母制作动画
- javascript - 为什么沙盒站点使用沙盒来干扰通过 JavaScript 进行的 CSS 操作?
- jquery - 如何从当前输入中获取数据
- python - 当您从 Django 管理类中排除一个字段时,这是否也会阻止在 POST 中设置该字段?
- javascript - 在弹出图像上显示“下载图像”标题
- mysql - Mysql 存储函数嵌套查询(在 INSERT 查询中选择)
- python - python - 两个具有不同级别和输出流的记录器对象
- java - PeripherialManager.getInstance() 抛出 java.lang.RuntimeException: Stub