객체 컬렉션에 대한 연산을 한꺼번에 수행할 수 있는 능력
이전 아톰들에서 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 |