코틀린 언어 정리 4-3
Collection operations
Common operations( 일반적인 연산들 )
Transformations ( 변환 )
Mapping
컬렉션의 모든 요소들에 각각 map 연산을 적용한 결과를 순서 변경 없이 그대로 컬렉션으로 생성하여 리턴 합니다.
map, mapIndexed, mapNotNull, mapIndexedNotNull
예제
Zipping
두 개의 컬렉션의 index가 동일한 각각의 요소들을 Pair 로 만든 후 이를 요소로 하는 컬렉션을 생성합니다.(zip 연산) 역으로 Pair를 요소(element)로 하는 컬렉션을 두 개의 컬렉션으로 나누어 생성 할 수도 있습니다.(unzip 연산)
zip, unzip
예제
Association
컬렉션의 각각의 요소에 association 연산을 적용 후 원본 요소와 원본 요소에 적용한 association 연산 결과값의 Pair를 요소로 하는 Map(key, value pair)을 생성합니다. Map 컬렉션은 key 값의 중복을 허용하지 않으므로, 만약 중복되는 원본 요소가 있는 경우 마지막 원본 요소만 유지됩니다.
associateWith
Pair(원본 요소, association 연산 결과값) 를 요소로 하는 컬렉션 생성
associateBy
Pair(association 연산 결과값, 원본 요소) 를 요소로 하는 컬렉션 생성
associate
Pair를 리턴하며 key와 value는 원하는 아무 것(연산을 수행하는 컬렉션과 전혀 관련 없는 값도 가능. 단 값의 타입은 동일해야 함)이나 지정할 수 있습니다.
예제
Flattening
컬렉션이 중첩된 컬렉션 일 경우 사용할 수 있는 연산입니다. 컬렉션의 요소로 추가되어 있는 하위 컬렉션들의 모든 요소들을 새로운 컬렉션의 요소로 추가하여 리턴합니다. 예를 들면 아래와 같습니다. 최상위 컬렉션 A와 A의 요소로 추가된 B-1, B-2, ... B-N 컬렉션이 있다고 가정하면 B-1의 모든 요소, B-2의 모든 요소, ..., B-N의 모든 요소를 새로운 컬렉션의 요소로 추가하여 리턴합니다.
flatten
매개변수가 없으며 호출하면 Flattening을 수행합니다.( 새로운 컬렉션 리턴 )
flatMap
람다함수를 인자로 전달 받으며, flatten 함수와 기본적인 동작은 비슷합니다. flatMap 함수 내에서 람다함수는 리시버의 요소인 컬렉션들의 개수 만큼 실행 되며 이 람다함수에서 리턴(마지막 표현식)하는 컬렉션의 요소들을 새로운 컬렉션에 추가하여 리턴합니다. flatten 함수와의 차이점은, 람다함수에서 리턴하는 컬렉션(리턴값은 모두 컬렉션 이어야 합니다.)에 다른 연산(변환 등)을 적용할 수 있다는 점입니다. 예를 들어, 중첩된 컬렉션 구조의 중간에 호환되지 않는 컬렉션 비슷한 객체가 있을 경우 이 객체에서 호환되는 컬렉션을 제공 받거나 또는 생성하여 flatMap 연산을 완료할 수 있습니다.
주의
flatten, flatMap 함수 모두 중첩된 컬렉션에 대해 1차적으로만 Flattening을 수행합니다. 재귀적으로 Flattening을 수행하지 않으므로 3차 이상의 다중 중첩 컬렉션일 경우 연산을 여러번 적용해야 합니다. 만약 flatMap을 호출한 컬렉션의 요소 중 컬렉션이 아닌 것이 하나 이상 포함되어 있다면( 예를 들면 0번째 요소는 List 인데 1번째 요소는 Int형 숫자인 경우 ) 컴파일 에러가 발생합니다.
예제
String representation
컬렉션의 요소들을 읽을 수 있는 형식(문자열)로 반환할 수 있는 기능입니다. joinTo 는 기존의 문자열 버퍼 뒤에 컬렉션의 문자열을 추가한다는 점을 제외하면 joinToString 과 동일합니다.
joinToString( separator, prefix, postfix, limit, truncated, transform )
joinTo( buffer, separator, prefix, postfix, limit, truncated, transform )
예제
'코틀린( Kotlin )' 카테고리의 다른 글
코틀린 4-5 Collection operations - Plus and Minus Operators (0) | 2020.04.12 |
---|---|
코틀린 4-4 Collection operations - Filtering (0) | 2020.04.12 |
코틀린 4-2 Collection operations - 자주 사용하는 연산들 (0) | 2020.04.11 |
코틀린 4-1 Collection 개요 (0) | 2020.04.11 |
코틀린 3-3 함수형 프로그래밍 - 인라인 고차함수와 람다 (0) | 2020.04.10 |