Collections 함수

지프치프·2025년 1월 25일
0

개요

Kotlin에서는 Collection 객체들의 사용이 더욱 쉽도록 도와주는 함수들이 있다.
이를테면 map, filter.. 등이 있는데
Java Stream에 대응되는 함수들이다.

map

  • 각 요소를 반환하여 새로운 컬렉션을 만듬
fun main() {
   val list = listOf(1, 2, 3, 4, 5)
	val sqaureList = list.map { it * it }
	print(sqaureList) // [1, 4, 9, 26, 25]
}

filter

  • 조건을 만족하는 요소만 뽑아서 새로운 Collection을 반환
fun main() {
	val list = listOf(1, 2, 3, 4, 5, 6)
	val filterList = list.filter { it % 2 == 0 }
	print(filterList) // [2, 4, 6]
}

forEach

  • 각 요소를 순회
fun main() {
	val names = listOf("Alice", "Bob", "Charlie")
	names.forEach { println(it) }
}

reduce

  • 각 요소들을 순회하면서 요소들의 합을 반환
fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)
    val sum = numbers.reduce { acc, num -> acc + num }
    println("result > $sum") // result > 15
}

fold

  • 초기값을 시작으로 각 요소들을 순회하면서 요소들의 합을 반환
fun main() {
	val numbers = listOf(1, 2, 3)
	val result = numbers.fold(10) { acc, num -> acc + num }
	println(result) // 16
}

find

  • 조건을 만족하는 첫 요소를 반환
fun main() {
	val list = listOf(1, 2, 3, 4, 5)
	val result = list.find { it % 2 == 0 }
    println(result) // 2
}

groupBy

  • 특정 키를 기준으로 요소들을 그룹화하여 Map으로 반환
fun main() {
    val list = listOf("abcde", "abc", "abdefg")
    val group = list.groupBy { it.length }
    println(group) // {5=[abcde], 3=[abc], 6=[abdefg]}
}

특정 조건을 기준으로 그룹화도 가능하지만 이 경우는 아래 'partition' 함수 사용을 권장

sortBy / sortedBy

  • 요소가 단순 원시타입이 아닌 여러 데이터를 가지고 있는 객체일 때 객체 내 특정 데이터를 기준으로 요소들을 정렬
  • sortBy는 mutable 객체, sortedBy는 immutable 객체에서 사용 가능
data class Person(val name: String, val age: Int)
fun main() {
	val people = listOf(
    	Person("Alice", 30),
    	Person("Bob", 25),
	    Person("Charlie", 35)
	)
	val sortedByAge = people.sortedBy { it.age }
    println(sortedByAge) // [Person(name=Bob, age=25), Person(name=Alice, age=30), Person(name=Charlie, age=35)]
}

partition

  • 조건을 기준으로 요소들을 두 그룹으로 나눔
fun main() {
	val list = listOf(1, 2, 3, 4, 5, 6)
	val (evens, odds) = list.partition { it % 2 == 0 }
    println(evens) // [2, 4, 6]
    println(odds) // [1, 3, 5]
}

zip

  • 두 리스트를 합쳐서 Pair 를 반환

take / takeWhile

  • take : 주어진 갯수의 요소를 반환
  • takeWhile : 조건을 만족하는 요소들을 리스트로 반환

    find 는 첫 요소 하나만 반환
    takeWhile은 조건을 만족하는 요소 모두를 반환

drop / dropWhile

  • drop : 주어진 갯수의 요소를 제거
  • dropWhile : 조건을 만족하는 요소들을 제외한 리스트를 반환

distinct

  • 중복을 제거하고 새로운 Collection을 반환

any / all / none

  • 조건을 만족하는지 확인
    - any : 요소 중에 하나라도 조건을 만족하면 true
    • all : 요소 중에 모든 요소가 조건을 만족하면 true
    • none : 요소 중에 조건을 만족하는 요소가 없으면 true
profile
지프처럼 거침없는 개발을 하고싶은 개발자

0개의 댓글

관련 채용 정보