Hello, Android!

시퀀스 본문

Kotlin

시퀀스

lwndnjs93 2020. 7. 22. 17:50

코틀린의 시퀀스는 요소의 크기를 특정하지 않고

나중에 결정이 가능한 컬력션이다

generateSequence()함수를 이용하여 시퀀스를 만들수 있다

매개변수가 시드 로써 시작하는 요소의 값이 된다

시퀀스는 generateSequence함수 호출시 바로 생성되는것이 아닌

toList(), count()함수가 호출되는 시점에서 컬렉션이 생성된다

 

generateSequence(1) { it * 2 } 에서는 시퀀스에 대한 시드값, 식만 정하고

seq.take(5).toList() 에서 take의 매개변수가 컬렉션의 길이가 되며

toList()로 list컬렉션으로 반환한다

시퀀스 에서도 map, filter를 사용할수도 있다

map과 filter는 각각 호출될때마다 새로운 list를 만들어서 반환을 한다

예를들어 특정 리스트에 대하여 map 처리를 한 뒤 filter를 한다고 하면

아래와 같이 사용할 것이다

하지만 위와 같이 사용하게 된다면 리스트의 모든 요소에 대하여

map연산을 한 뒤 리스트를 만들어 filter에 전달하여

filter에 대하여 연산을 진행하게 될 것이다

여기서 만약 asSequence()를 사용하게 된다면

각각의 요소에 대하여 map과 filter연산을 실행하여 list로 만들게 된다

 

asSequence()를 사용하면, map처리 결과를 list로 만들어 filter로 체크를 하여

다시 리스트로 만드는 과정이 사라진 것이다

만약 컬렉션에 요소의 개수가 많은 상황에서, 여러 연산을 해야 하는 경우

시퀀스로 만든 뒤 필요한 연산들을 처리하여 다시 컬렉션으로 만들어 반환하는것이

속도, 메모리 측면에서 좋은 성능을 낼수있다

'Kotlin' 카테고리의 다른 글

Scope Function let  (0) 2020.07.24
클로저  (0) 2020.07.23
컬렉션 검색, 분리, 병합, 정렬  (0) 2020.07.21
컬렉션 잘라내기, 매핑  (0) 2020.07.21
컬렉션 요소의 검사, 필터  (0) 2020.07.20