티스토리 뷰

728x90

Kotlin List 종류들과 Map 등의 Iterable 객체들은 filter, map 등의 함수를 사용합니다. 

1. 일반 사용법

val strList = "한 두울 세에엣 네에에에엣 다서어어어엇".split(" ")
        val lengthList = strList
            .filter { println("filter: $it"); it.length > 2 }
            .map { println("map: ${it.length}"); it.length }
            .take(2)

println(lengthList.toList())             
                         
                         
                         
// 출력 결과
filter: 한
filter: 두울
filter: 세에엣
filter: 네에에에엣
filter: 다서어어어엇
map: 3
map: 5
map: 6
[3, 5]

 

2. Sequence 사용

val strList = "한 두울 세에엣 네에에에엣 다서어어어엇".split(" ").asSequence()
        val lengthList = strList
            .filter { println("filter: $it"); it.length > 2 }
            .map { println("map: ${it.length}"); it.length }
            .take(2)

println(lengthList.toList())        
                         
                         
                         
// 출력 결과
filter: 한
filter: 두울
filter: 세에엣
map: 3
filter: 네에에에엣
map: 5
[3, 5]

 

1과 2의 차이를 보면, 연산 횟수가 8번에서 6번으로 줄어든 것을 확인할 수 있습니다. 

Sqeunce의 정의를 살펴보면 다음과 같습니다. 

Sequence는 lazy하게 실행되어 집니다.

한번에 모든 연산이 진행되므로 첫번째 단어인 "한" 이 filtering 되고, 바로 mapping 되고, take 조건까지 확인되어집니다. 

 


결론: Kotlin Iterable API를 활용할 때, sequence를 통해 성능 개선을 할 수 있다!

 

'kotlin' 카테고리의 다른 글

map vs flatMap  (0) 2020.09.07
Reified란? (Type Eraser)  (0) 2020.09.07
SAM Conversions  (0) 2019.12.30
Generic  (0) 2019.10.15
Kotlin - Nested / Inner class  (0) 2019.08.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함