코틀린에서는 다양한 형태로 시퀀셜하게 결과값을 이어나가는 코딩이 가능하다.
문제는 컬렉션을 베이스로 시퀀셜하게 코드 블럭을 잇는 경우, 이에 대한 결과값들이 연산 이후마다 만들어지기 때문에
(우리는 최종적인 값만을 필요로 함에도 불구하고)
메모리적으로 비효율 적이라 할 수 있다. (특정 컬렉션에 사용하는 조건이 다양하고 많을 수록 받는 영향은 클 것이다)
이를 위해 코틀린은 Sequence를 제공하고 있는데, 컬렉션에 이를 사용하는 경우 호출 원본 리스트에서 이어진 시퀀셜한 모든 연산을 뒤로 이를 toList 등으로 추출하기 이전까지 어떠한 임시 컬렉션 변수를 생성하지 않는다는 것이다!
방법은 간단한데, 보통 사용하던 컬렉션 API 사용에 앞서 원본 리스트에 asSequence()를 호출하고 사용하는 것이다.
people.asSequence()
.map(Person::name)
.filter{ it.startsWith("A")
.toList()
< 참고 >
'LANGUAGES, METHODLOGY > Kotlin' 카테고리의 다른 글
[Kotlin] 컬렉션 함수형 API로 컬렉션 쉽게 갖고 놀기 (0) | 2021.11.17 |
---|---|
[Kotlin] Default Argument와 Named Argument 활용하기 (0) | 2020.10.06 |
[안드로이드] Kotlin sealed class로 여러 클래스들을 보다 분명하게, 유연하게 활용하기 (0) | 2020.08.10 |
[안드로이드 | 코틀린] 코틀린으로 Queue 사용해보기 (0) | 2019.12.13 |
[안드로이드 | ExoPlayer] EventListener를 활용해 여러개의 동영상 연달아 재생하기 (0) | 2019.11.11 |