Collection 함수들
RxJava
에서 자주 쓰이는 함수중 하나인 Collection
형태를 알아보자.
우선 toList()
이다.
여러개의 배출을 하나의 리스트로 만들어주는 것이다. 주의점은 리턴값이 Single<T>
인것을 유념하자.
아주 간단한 예제를 보자.
ToList
fun testToList(){
Observable.just("Alpha" , "Beta" , "Gamma" , "Delta" , "Epslion")
.toList() //Single로 배출
.subscribeBy(
onSuccess = {
println(it)
}
)
}
====================================
[Alpha, Beta, Gamma, Delta, Epslion]
정렬을 원할땐 ToSortedList
를 사용하면 된다.
ToSortedList
Observable.just(3,1,5,20,2,7)
.toSortedList()
.subscribeBy(
onSuccess = {
println(it)
}
)
====================================
[1, 2, 3, 5, 7, 20]
Key + Value 로 묶을수 있는 Map 도 제공한다.
ToMap
Observable.just("Alpha" , "Beta" , "Gamma" , "Delta" , "Epslion")
.toMap { it.toCharArray()[0] }
.subscribeBy(
onSuccess = {
println(it)
}
)
// {A=Alpha, B=Beta, D=Delta, E=Epslion, G=Gamma}
ToMap 인자를 다르게
Observable.just("Alpha" , "Beta" , "Gamma" , "Delta" , "Epslion")
.toMap({
it.toCharArray()[0]
},
String::length,{
ConcurrentHashMap()
})
.subscribeBy(
onSuccess = {
println(it)
}
)
//{A=5, B=4, D=5, E=7, G=5}
만약 같은 키에 여러개의 중복된 값이 있는 경우 마지막 아이템이 나온다.
Observable.just("Alpha" , "Beta" , "Gamma" , "Delta" , "Epslion")
.toMap(String::length)
.subscribeBy(
onSuccess = {
println(it)
}
)
// {4=Beta, 5=Delta, 7=Epslion}
그래서 이 부분을 수정하면 toMultiMap 이란것도 제공한다.
ToMultiMap
Observable.just("Alpha" , "Beta" , "Gamma" , "Delta" , "Epslion")
.toMultimap(String::length)
.subscribeBy(::println)
// {4=[Beta], 5=[Alpha, Gamma, Delta], 7=[Epslion]}
'스터디 > RxJava2' 카테고리의 다른 글
[RxKotlin] 예제로 배워보는 그룹핑 방법 (0) | 2018.01.24 |
---|---|
[RxKotlin] 두개의 리스트를 비교시 - Combinlatest 사용 (0) | 2018.01.23 |
[RxKotlin] Lift 연산자에 대해서 알아보자 (0) | 2018.01.22 |
RxKotlin Using 사용해보자 (0) | 2018.01.19 |
RxKotlin 정리 (0) | 2017.11.06 |