자주쓰는 컬렉션 함수

구워먹는 삼겹살·2025년 2월 23일
0

📌 코틀린 컬렉션 함수 정리

🟢 1. 변환 (Transformation)

함수설명예제
map모든 요소를 변환하여 새로운 리스트 생성list.map { it * 2 }
flatMap각 요소를 리스트로 변환 후, 하나의 리스트로 합침list.flatMap { listOf(it, it * 2) }
distinct중복 제거list.distinct()
chunked(n)리스트를 n개씩 나눠서 리스트의 리스트로 반환list.chunked(2)

🔵 2. 필터링 (Filtering)

함수설명예제
filter조건을 만족하는 요소만 추출list.filter { it > 10 }
filterNot조건을 만족하지 않는 요소만 추출list.filterNot { it > 10 }
filterNotNullnull 값을 제외한 리스트 반환listOf(1, null, 2).filterNotNull()
take(n)앞에서 n개 가져오기list.take(3)
takeLast(n)뒤에서 n개 가져오기list.takeLast(3)
drop(n)앞에서 n개 제외list.drop(2)
dropLast(n)뒤에서 n개 제외list.dropLast(2)

🟣 3. 집계 (Aggregation)

함수설명예제
sum숫자 리스트의 합listOf(1, 2, 3).sum()
sumOf특정 속성 값을 합산listOf(Product("사과", 1000)).sumOf { it.price }
average평균 값 계산listOf(1, 2, 3).average()
count특정 조건을 만족하는 개수 반환list.count { it % 2 == 0 }
maxOrNull최대값 반환 (null 가능)list.maxOrNull()
minOrNull최소값 반환 (null 가능)list.minOrNull()

🟡 4. 정렬 (Sorting)

함수설명예제
sorted오름차순 정렬list.sorted()
sortedDescending내림차순 정렬list.sortedDescending()
sortedBy특정 속성을 기준으로 정렬list.sortedBy { it.age }
sortedByDescending특정 속성을 기준으로 내림차순 정렬list.sortedByDescending { it.age }

🟠 5. 검사 (Checking)

함수설명예제
any하나라도 조건을 만족하면 truelist.any { it > 10 }
all모든 요소가 조건을 만족하면 truelist.all { it > 0 }
none모든 요소가 조건을 만족하지 않으면 truelist.none { it < 0 }
contains특정 값 포함 여부 확인list.contains(5)

🔴 6. 그룹화 및 분할 (Grouping & Partitioning)

함수설명예제
groupBy특정 기준으로 그룹화list.groupBy { it.length }
partition조건에 따라 두 개의 리스트로 분할list.partition { it > 10 }

🟤 7. 누적 연산 (Reduce & Fold)

함수설명예제
reduce리스트 요소를 누적 계산하여 하나의 결과 반환list.reduce { acc, num -> acc + num }
foldreduce와 동일하지만 초기값 설정 가능list.fold(100) { acc, num -> acc + num }
reduceRightreduce와 동일하지만 오른쪽부터 연산list.reduceRight { num, acc -> acc - num }

🎯 정리

  • 변환: map, flatMap
  • 필터링: filter, take, drop
  • 집계: sum, sumOf, count
  • 정렬: sortedBy, sortedDescending
  • 검사: any, all, none
  • 그룹화: groupBy, partition
  • 누적 연산: reduce, fold

0개의 댓글