컬렉션

kwang·2023년 3월 26일
0

Kotlin

목록 보기
2/6

코틀린에서 컬랙션 관련 함수 사용하기

지연계산 컬렉션

코틀린에서는 여러 컬렉션 관련 함수를 제공한다.
.map(), .filter()와 같은 기본적으로 제공하는 api에 대해서는 간단히 설명하면 해당 API들은 리턴 값으로 컬렉션을 즉시 생성한다.
따라서 원소에 갯수가 많을 경우 메모리를 많이 차지 할 수 있다.

시퀀스를 이용한 방법

 val result = people.asSequence()
        .map(Person::name)
        .filter { it.startsWith("k") }
        .toList()

위와 같이 .asSequence()를 이용할 경우 원소의 갯수가 많을 수록 성능개선이 가능하다!!!

시퀀스와 컬렉션을 그대로 쓰는 방법의 선택 차이는 최종연산에 따라 골라쓰도록하자

그 이유는 이와 같다. 최종연산이 find()일 경우는 모든 컬랙션에 대해서 접근할 필요없이 원소에 순서대로 첫번째 값만 있으면 되기때문에 순차적으로 적용하는 시퀀스로 변환해서 사용하고 toList() 와 같이 모든 컬렉션이 반영되어야 하는 경우에는 시퀀스로 변환하지 말고 그냥 사용하도록 하자!

시퀀스? 스트림? 컬렉션?
그래서 세개중에 어떤 대상을 사용해야할 지 선택기준은?
컬렉션 VS 시퀀스 / 스트림 으로 구분할 수 있다. 그럼 시퀀스와 스트림을 구분하는 이유는 자바 8버전이하에서 스트림을 지원하지 않기에 시퀀스를 지원한다. 따라서 자바 버전에 따라 달리 사용하고 시퀀스와 스트림 제공하는 기능의 차이는 병렬스트림의 지원여부 차이이다.

0개의 댓글