Java Stream APIを使用して、オブジェクトと同じタイプのオブジェクトのコレクションがネストされている構造をフラット化する方法を知りたいと思っていました。
つまりComponent
、型のフィールドを持つクラスがあるということList<Component>
です。私がしたいのは、次のコードと同じであるストリームストリームソリューションを見つけることです(すべてのコンポーネントとネストされたサブコンポーネントのリストで終わる必要があります)。
List<Component> components = getComponents(id);
List<Component> componentsAndSubcomponents = new ArrayList<>();
for (Component component : components) {
componentsAndSubcomponents.add(component);
componentsAndSubcomponents.addAll(component.getSubComponents());
}
あなたは使うことができflatMap
てStream
連結:
List<Component> componentsAndSubcomponents =
components.stream()
.flatMap(c -> Stream.concat(Stream.of(c),c.getSubComponents().stream()))
.collect(Collectors.toList());
これは、それぞれを含むにマップComponent
し、その後にサブコンポーネントをすべて続き、これらすべてのをフラットにフラット化し、に収集します。Stream
Component
Stream
Stream<Component>
List<Component>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加