티스토리 뷰
Intro
Kotlin으로 작업 중 문득 Sequence와 Iterator에 대한 구체적인 차이점에 대해 의문이 생겨서 포스팅.
Sequence와 Iterator둘다 kotlin에서 제공하는 interface이며 많은 extension이 구현되어있다.
다만 sequence의 경우 kotlin-stdlib에 포함되어있는 최상위 interface이며 iterator의 경우 kotlin.collections에 포함되어 구현되어져 있다. 다만, 대부분의 extension이 함께 사용되어지며 표면상으로는 큰 차이점을 확인 할 수 없다.
Sequence vs Iterator
앞서 언급했듯이 interface상에서의 차이는 크게 찾아볼수 없다.
Kotlin Doc을 찾아본 결과 두 기능의 가장 큰 차이는 intermediate operation의 동작이 lazily한가 안한가의 차이인듯 하다.
iterator의 경우 모든 non-lazy가 기본이기 때문에 다양한 intermediate operation 호출 시 "즉시" 처리되며 그에 따른 최적화가 되어있으며 sequence의경우 lazy가 가능한 intermediate operation 호출 시 전부 lazily하게 동작한다.
따라서 본인이 구현하고자하는 목적에 맞게끔 원하는 기능을 사용면된다.
일반적으로 "작은" 단위에 collections에 대한 lazyliy한 동작은 많은 overhead를 발생시키며 이때 iterator를 활용하여 처리하면 된다. Java 8 부터 제공하는 stream또한 lazy하게 동작하는 것이 default이며 이도 마찬가지로 작은 collections에 대한 처리는 따로 iterator를 활용하여 처리하는것이 바람직하다.
Reference
- 기본적으로 java,kotlin에서 제공하는 collections 에 대한 lazy한 처리는 map-reduce를 토대로 만들어진다. [본문으로]
'Dev > Kotlin' 카테고리의 다른 글
Kotlin_FileTreeWalk (0) | 2017.11.06 |
---|---|
Kotlin Overview (0) | 2017.10.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- python
- mathjax
- C
- Android
- 비트마스크
- robocopy
- Matrix
- syntax highlighting
- 비트연산자
- 안드로이드
- 수식
- algorithm
- 알고리즘
- DNS
- highlightjs
- Highlighter
- 삼항연산자
- 도메인
- mysql
- Bit
- Kotlin
- 비트
- Math
- 행렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함