Flux를 List로 변환, Map - Reactor
이 튜토리얼에서는
collectList()
, collectSortedList()
, collectMap()
, collectMultimap()
함수를 사용하는 예제로 Flux를 List/Map으로 변환하는 방법을 보여줍니다.Flux를 Collection으로 변환하는 방법
다음과 같은
Flux
방법을 사용합니다.collectList()
: Mono<List>
에 시퀀스를 축적합니다. collectSortedList()
: 시퀀스를 누적하고 Mono<List>
로 정렬합니다. collectMap()
: 시퀀스를 Mono<Map>
로 변환합니다. collectMultimap()
: 시퀀스를 Mono<Map>
로 변환하여 각 맵의 키가 다중 값과 쌍을 이룰 수 있도록 합니다( Collection
에서). 그러면 위의
Mono
결과는 block()
메서드를 사용하여 실제 목록/맵으로 변환됩니다.Flux 선언 및 초기화
Flux를 초기화하는 방법에는 여러 가지가 있습니다. 이 튜토리얼에서는
Flux.just()
함수를 사용하여 간단한 방법을 사용할 것입니다.Flux<String> flux = Flux.just(
"Site_0:bezkoder.com",
"Description_0:Java Technology",
"Description_1:Project Reactor");
Flux를 목록으로 변환
플럭스 수집 목록()
collectList()
시퀀스를 Mono<List>
에 누적한 다음 block()
메서드를 사용하여 Mono를 구독하고 다음 신호가 수신될 때까지 무기한 차단합니다.List<String> list1 = flux.collectList().block();
list1.forEach(System.out::println);
결과:
Site_0:bezkoder.com
Description_0:Java Technology
Description_1:Project Reactor
플럭스 수집 정렬 목록()
collectSortedList()
시퀀스를 누적하고 Mono<List>
로 정렬한 다음 block()
메서드를 사용하여 Mono
를 구독하고 차단합니다.List<String> list2 = flux.collectSortedList().block();
list2.forEach(System.out::println);
결과:
Description_0:Java Technology
Description_1:Project Reactor
Site_0:bezkoder.com
Flux를 맵으로 변환
플럭스 수집 맵()
함수 프로토타입:
Mono<Map> collectMap(keyExtractor, valueExtractor)
– 먼저 함수는 시퀀스를
Mono<Map>
로 변환합니다.– 마지막으로
Mono
는 block()
메서드에 의해 실제 List/Map이 됩니다.Map<String, String> map1 = flux
.collectMap(
item -> item.split(":")[0],
item -> item.split(":")[1])
.block();
map1.forEach((key, value) -> System.out.println(key + " -> " + value));
결과:
Site_0 -> bezkoder.com
Description_1 -> Project Reactor
Description_0 -> Java Technology
플럭스 수집멀티맵()
함수 프로토타입:
Mono<Map<Object, Collection>> collectMultimap(keyExtractor, valueExtractor)
collectMultimap()
: 시퀀스를 Mono<Map>
로 변환하여 각 맵의 키가 다중 값과 쌍을 이룰 수 있도록 합니다( Collection
에서).예를 들어,
Site
및 Description
를 키로 사용하는 맵을 얻을 수 있습니다.Map<String, Collection<String>> map2 = flux
.collectMultimap(
item -> item.split("_[0-9]+:")[0],
item -> item.split(":")[1])
.block();
map2.forEach((key, value) -> System.out.println(key + " -> " + value));
결과 확인:
Site -> [bezkoder.com]
Description -> [Java Technology, Project Reactor]
구현
기술
– 자바 8
– 메이븐 3.6.1
– 2020.0.1 릴리스 트레인이 있는 Reactor Core 3.4.0.
소스 코드
package com.bezkoder.reactor;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import reactor.core.publisher.Flux;
public class FluxCollection {
public static void main(String[] args) {
Flux<String> flux = Flux.just("Site_0:bezkoder.com", "Description_0:Java Technology",
"Description_1:Project Reactor");
System.out.println("=== flux.collectList() ===");
List<String> list1 = flux.collectList().block();
list1.forEach(System.out::println);
System.out.println("\n=== flux.collectSortedList() ===");
List<String> list2 = flux.collectSortedList().block();
list2.forEach(System.out::println);
System.out.println("\n=== flux.collectMap() ===");
Map<String, String> map1 = flux
.collectMap(
item -> item.split(":")[0],
item -> item.split(":")[1])
.block();
map1.forEach((key, value) -> System.out.println(key + " -> " + value));
System.out.println("\n=== flux.collectMultimap() ===");
Map<String, Collection<String>> map2 = flux
.collectMultimap(
item -> item.split("_[0-9]+:")[0],
item -> item.split(":")[1])
.block();
map2.forEach((key, value) -> System.out.println(key + " -> " + value));
}
}
결과
=== flux.collectList() ===
Site_0:bezkoder.com
Description_0:Java Technology
Description_1:Project Reactor
=== flux.collectSortedList() ===
Description_0:Java Technology
Description_1:Project Reactor
Site_0:bezkoder.com
=== flux.collectMap() ===
Site_0 -> bezkoder.com
Description_1 -> Project Reactor
Description_0 -> Java Technology
=== flux.collectMultimap() ===
Site -> [bezkoder.com]
Description -> [Java Technology, Project Reactor]
부록: Reactor 얻기
Maven에서 Reactor 설치
– 먼저
pom.xml
에 다음을 추가하여 BOM을 가져옵니다.<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>2020.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
– 다음으로 종속성을 추가합니다.
<dependencies>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</dependency>
</dependencies>
Gradle에 Reactor 설치
– 먼저 Gradle 플러그인 포털에서 플러그인을 적용합니다.
plugins {
id "io.spring.dependency-management" version "1.0.7.RELEASE"
}
– 다음으로 종속성 관리를 사용하여 BOM을 가져옵니다.
dependencyManagement {
imports {
mavenBom "io.projectreactor:reactor-bom:2020.0.1"
}
}
– 마지막으로 종속성을 추가합니다.
dependencies {
implementation 'io.projectreactor:reactor-core'
}
추가 읽기
Reference
이 문제에 관하여(Flux를 List로 변환, Map - Reactor), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bezkoder/convert-flux-into-list-map-reactor-2926텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)