public class Parent {
String name;
List<Child> children;
}
public class Child {
String childName;
}
我有这两个类,通过它们我的数据集变为:
List<Parent> parents = new ArrayList<>();
List<Child> _child1 = new ArrayList<>();
_child1.add(new B("p1c1"));
_child1.add(new B("p1c2"));
_child1.add(new B("p1c3"));
Parent p1 = new Parent("p1", _child1);
parents.add(p1);
List<Child> _child2 = new ArrayList<>();
_child2.add(new B("p2c1"));
Parent p2 = new Parent("p2", _child2);
parents.add(p2);
是否可以通过一些数据进行如下转换:
parents[
parent1 {"p1", ["p1c1"]}, parent1 {"p1", ["p1c2"]}, parent1 {"p1", ["p1c3"]},
parent2 {"p2", ["p2c1"]}
]
我想将嵌套列表分解为单例嵌套列表,主要目的是使用Java 8中的stream api实现此目的,您还能建议避免并发修改异常的最佳方法吗?
答案 0 :(得分:4)
这应该做:
parents.stream()
.flatMap(parent -> parent.getChildren()
.stream()
.map(child -> new SimpleEntry<>(parent, child)))
.map(pair -> new Parent(pair.getKey().getName(),
Arrays.asList(pair.getValue())))
.collect(Collectors.toList());
它只是为每个孩子创建一个父/子对,然后为每个对创建一个 new 父,并将单个孩子添加到children
字段中。然后将其收集到Parent
列表中。