'링크모음 > BlockChain News' 카테고리의 다른 글

[GETH] GETH 명령어 모음  (0) 2018.05.10
크립토 키티 소스  (0) 2018.04.30
블록체인 공부 모음 링크  (0) 2018.04.13
SMT 백서  (0) 2018.04.12

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]}


+ Recent posts