본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 46] 컬렉션에 대한 연산

객체 컬렉션에 대한 연산을 한꺼번에 수행할 수 있는 능력

 

 

이전 아톰들에서 map(), filter(), any(), forEach() 등 다양한 함수들을 보았는데,

오늘의 아톰에서는 List와 그 외의 컬렉션에서 사용할 수 있는 다른 연산을 학습할 예정이다.

어떤 연산들이 있는지 알아보자.

 


 

[ List 만들기 ]

 

import atomictest.eq fun main() {
    // 람다는 인자로 추가할 원소의 인덱스를 받는다
    val listl = List(10) { it }
    listl eq "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"
    
    // 한 값으로만 이뤄진 리스트
    val list2 = List(10) { 0 }
    list? eq "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"
    
    // 글자로 이뤄진 리스트
    val list3 = List(10) { 'a' + it }
    lists eq "[a, bz c, d, e, f, g, h, i, j]"
    
    // 정해진 순서를 반복
    val list4 = List(10) { list3[it % 3] }
    list4eq"[a, b, c, a, b, c, a, b, c, a]"
}

 

: List 인자 생성을 위해 생성할 List의 크기, 생성한 List의 각 원소를 초기화 하는 람다가 필요

: 람다가 함수의 마지막 원소인 경우, 람다를 인자 목록 밖으로 빼내도 됨 (즉, 람다를 의미하는 중괄호만 남기고 괄호는 생략 가능함)

 


 

[ List() / MutableList() 는 생성자가 아닌 함수 ]

: List(), MutableList()의 경우 생성자가 아닌 함수이며, 다양한 컬렉션 함수가 술어를 받아 컬렉션의 원소를 검사함

 

1) filter() 

: 주어진 술어와 일치하는(술어가 true를 반환) 모든 원소가 들어 있는 새 리스트 생성

: Set을 적용하면 List를 결과로 반환

: filterNot()은 술어를 만족하지 않는 원소가 들어있는 리스트를 생성

: partition()은 동시에 양쪽 그룹(filter() / filterNot())을 만들어 내며, List가 들어있는 Pair 객체를 만듦

: filterNotNull() 은 null을 제외한 원소로 이루어진 새 리스트를 생성

 

2) any()

: 원소 중 어느 하나에 대해 술어가 true를 반환하면 true를 반환

: 결과를 찾자마자 이터레이션 중단

 

3) all()

: 모든 원소가 술어와 일치하는지 검사

 

4) none()

: 술어와 일치하는 원소가 하나도 없는지 검사

 

5) find(), firstOrNull()

: 술어와 일치하는 첫 번째 원소를 반환

: 원소가 없을 경우 find()는 예외를 던지며, firstOrNull()은 null을 반환

: 결과를 찾자마자 이터레이션 중단

 

6) lastOrNull

: 술어와 일치하는 마지막 원소를 반환

: 일치하는 원소가 없을 경우 null을 반환

 

7) count()

: 술어와 일치하는 원소의 개수를 반환

 

8) sumBy()

: 정수 합계를 구함

 

9) sumByDouble()

: 실수(Double) 합계를 구함

 

10) sorted(), sortedBy()

: 컬렉션을 오름차순으로 정렬

 

11) sortedDescending(), sortedByDescending()

: 컬렉션을 내림차순으로 정렬

 

12) minByOfNull()

: 주어진 대소 비교 기준에 따라 찾은 최솟값을 반환

: 리스트가 비어있는 경우 null을 반환

 

13) maxByOfNull()

: 주어진 대소 비교 기준에 따라 찾은 최댓값을 반환

: 리스트가 비어있는 경우 null을 반환

 

14) take()

: 첫 번째 원소를 취함

 

15) drop()

: 첫 번째 원소를 제거

 

16) takeList()

: 마지막 원소를 취함

 

17) dropLast()

: 마지막 원소를 제거


 

'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글

[Atomic 45] 람다의 중요성  (0) 2024.02.21
[Atomic 44] 람다  (0) 2024.02.21
[Atomic 43] break와 continue  (3) 2024.02.21
[Atomic 42] 확장 프로퍼티  (0) 2024.02.21
[Atomic 41] 제네릭스 소개  (0) 2024.02.21