У меня есть следующий объект и список в соответствии с типом объекта:
public class A{
private String x;
private String y;
private List<A> child = new ArrayList<>();
}
Что я хочу сделать, так это сгладить список и составить список объекта A вместе с его дочерними элементами;
В настоящее время я делаю три отдельных утверждения, как показано ниже:
List<A> ChildElements = map.values()
.stream()
.flatMap(entry -> entry.getChild().stream())
.collect(Collectors.toList());
List<A> RootElements = map.values()
.stream()
.collect(Collectors.toList());
List<A> elements = Stream.concat(ChildElements.stream(),RootElements.stream()).collect(Collectors.toList());
Я хотел узнать, можно ли реорганизовать приведенное выше в одном выражении.
Спасибо.
Зачем вам все это в одном заявлении?
@ Turing85 просто для моего сведения и посмотреть, можно ли это написать меньшим количеством строк кода.
map.values().stream().flatMap(entry -> { final ArraryList<A> result = new ArrayList>(entry.getChild().stream())); result.add(entry); return result.stream(); }).collect(Collectors.toList());