본문 바로가기

LANGUAGES, METHODLOGY/Kotlin

[Kotlin] 컬렉션의 lazy 연산을 짚어보자 (Sequence)

코틀린에서는 다양한 형태로 시퀀셜하게 결과값을 이어나가는 코딩이 가능하다.

 

문제는 컬렉션을 베이스로 시퀀셜하게 코드 블럭을 잇는 경우, 이에 대한 결과값들이 연산 이후마다 만들어지기 때문에

(우리는 최종적인 값만을 필요로 함에도 불구하고)

 

메모리적으로 비효율 적이라 할 수 있다. (특정 컬렉션에 사용하는 조건이 다양하고 많을 수록 받는 영향은 클 것이다)

 

이를 위해 코틀린은 Sequence를 제공하고 있는데, 컬렉션에 이를 사용하는 경우 호출 원본 리스트에서 이어진 시퀀셜한 모든 연산을 뒤로 이를 toList 등으로 추출하기 이전까지 어떠한 임시 컬렉션 변수를 생성하지 않는다는 것이다! 

 

방법은 간단한데, 보통 사용하던 컬렉션 API 사용에 앞서 원본 리스트에 asSequence()를 호출하고 사용하는 것이다.

 

people.asSequence()
.map(Person::name)
    .filter{ it.startsWith("A")
    .toList()

 

< 참고 >

 

Kotlin in Action

코틀린이 안드로이드 공식 언어가 되면서 관심이 커졌다. 이 책은 코틀린 언어를 개발한 젯브레인의 코틀린 컴파일러 개발자들이 직접 쓴 일종의 공식 서적이라 할 수 있다. 코틀린 언어의 가장

book.naver.com