컬렉션 연산의 문제와 Sequence의 지연 계산을 통한 해결 컬렉션 연산의 문제 컬렉션을 사용해 람다 연산을 하게 되면 비효율적으로 동작한다. 예를 들어 컬렉션(리스트)에서 가장 먼저 나오는 짝수값을 찾고 싶다고 해보자. 이런 코드는 다음과 같이 작성될 수 있다. fun main() { val collection = listOf(1, 2, 3, 4, 5, 6, 7, 8) val result = collection.filter { println("filter >> $it 은 짝수인가? >> ${it % 2 == 0}") it % 2 == 0 // 짝수만 필터링 }.first() println(result) } 이렇게 작성된 코드가 어떻게 동작하는지 코드를 실행해 확인해 보자. 그러면 다음과 같은 결과를 ..
Kotlin/Collection
Array란 무엇인가? Array는 메모리의 연속적인 공간을 차지하고 있는 정적인 자료구조이다. 이러한 특성으로 인해 Array는 생성 시 크기를 지정해야 하며, 생성한 이후에는 크기의 조절이 불가능하다. Array의 특징 위의 특성으로부터 Array의 여러가지 특성이 나오는데, 아래 두 가지가 대표적인 특성이다. 1. Array는 Random access가 가능해 검색 속도가 빠르다. Array는 연속적인 공간을 차지하고 있으므로, Index를 이용해 객체로의 빠른 접근이 가능하다. 2. Array 생성 후에는 크기 조절이 불가능하다. Array는 메모리의 연속적인 공간을 차지하고 있어 일부를 제외하거나 공간을 추가하는 크기 조절이 불가능하다. Array의 크기 조절 Array에 값을 추가하려면(=크..
목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 reduce의 개념을 이해한다. reduce를 사용하는 방법을 익힌다. reduce() 개요 reduce는 순서가 있는 데이터(CharSequence, Iterable 등)에 대해 각 데이터에 대해 연산을 재귀적으로 수행해 반환해주는 함수이다. 시작 값은 맨 앞의 데이터이며, 반환 데이터 타입은 맨 앞의 데이터 타입을 따른다. 예를 들어 아래와 같은 sampl..
목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 그룹핑 함수 groupBy의 개념과 동작을 익힌다. 두개의 Collection을 조합하는 zip의 개념과 동작을 익힌다. 중복제거 함수 distinct의 동작을 익힌다. 확장함수 목록 groupBy groupBy는 keySelector함수를 통해 key를 select하여 해당 Key로 Map을 만드는(그룹화 하는) 함수이다. public inline fun I..
목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 변환함수의 개념을 익히고, map과 flatMap의 차이점을 익힌다. map을 사용하는 방법을 익힌다. flatMap을 사용하는 방법을 익힌다. 확장함수 목록 map map는 Collection을 다른 형태로 변환해주기 위해 사용한다. map : map은 인자로 받은 transform function을 통해 기존 Collection을 변형시킨 List를 ret..