티스토리 뷰

본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!!


컬렉션 타입의 데이터를 활용하는 데 있어서 도움이 되는 함수가 많아 보여서 정리해보려고 한다.

1. 집합 연산 함수

1. 1. forEach(), forEachIndexed()

forEach()

  • 단순히 컬렉션 타입의 데이터 개수만큼 특정 구문을 반복 실행할 때 유용하다.
listOf(1, 2, 3).forEach { println(it) }

forEachIndexed()

  • forEach 함수와 크게 다르지 않으며 index 값도 함께 활용하고 싶을 때 유용하다.
listOf(1, 2, 3).forEach { index, value -> println("$index 번째 값 : $value")}

1. 2. all(), any()

all()

  • 컬렉션 데이터의 모든 값들이 명시한 조건에 모두 만족할 경우 true를 반환하고 하나라도 만족하지 않으면 false를 반환한다.

any()

  • 컬렉션 데이터의 모든 값들이 명시한 조건에 하나라도 만족할 경우 true를 반환하고 모두 만족하지 않을 경우 false를 반환한다.
listOf(1, 2, 3).all { it > 0 } // true
listOf(1, 2, 3).all { it < 2 } // false
listOf(1, 2, 3).any { it < 2 } // true
listOf(1, 2, 3).any { it < 0 } // false

1.3. count(), find()

count()

  • 람다식으로 대입한 조건에 만족하는 데이터의 개수를 반환하는 함수이다.
listOf(1, 2, 3).count { it > 1 } // 2

find()

  • 람다식으로 대입한 조건에 만족하는 가장 첫 번째 데이터를 반환하는 함수이다.
  • 조건에 만족하는 데이터가 없으면 null을 반환한다.
listOf(1, 2, 3).find( it > 2 ) // 2
listOf(1, 2, 3).find( it > 4 ) // null

1.4. reduce(), reduceRight(), fold(), foldRight()

fold(), reduce()

  • reduce(), fold() 함수에 람다 함수를 대입하면 컬렉션 타입의 데이터를 람다 함수에 차례로 전달하며 람다 함수의 결괏값을 반환해준다.
  • 특징은 람다 함수에서 반환한 값을 기억하고 있다가 그 다음 데이터에 의해 호출될 때 이전에 반환했던 값을 함께 전달해 주어 참조할 수 있게 한다.
  • fold() 함수는 초깃값을 지정할 수 있고 reduce() 함수는 초깃값을 지정할 수 없다.
var result = listOf(1, 2, 3).fold(10, { total, next ->
    println("$total .. $next")
    total + next // 마지막 값이 다음 total 값으로 들어간다.
})

println(result) // 16

foldRight(), reduceRight()

  • fold()와 비슷한데 데이터의 마지막에서부터 거꾸로 반영한다.
var result = listOf(1, 2, 3).foldRight(10) { next, total ->
    println("$total .. $next")
    total + next
}

1.5. max(), maxBy(), min(), minBy()

  • max() 함수와 min() 함수는컬렉션 타입의 데이터 중 가장 큰 값이나 작은 값을 반환하는 함수이다.
  • maxBy() 함수와 minBy() 함수는 람다 함수를 매개변수로 지정하여 데이터 값이 람다 함수를 거치고 나서 가장 큰 값이나 작은 값을 반환하는 함수이다.
result = listOf(2, 5, 11).maxBy { it % 5 } // 2

1.6. none(), sumBy()

none()

  • 람다 함수에서 지정한 조건에 맞는 데이터가 없으면 true, 있으면 false를 반환한다.
val result = listOf(2, 5, 11).none { it % 10 } // true

sumBy()

  • 람다 함수를 거쳐 반환한 모든 값을 더하는 함수이다.
var result = listOf(1, 2, 3).sumBy { it * 10 } // 60

 

참고 자료

[깡샘의 코틀린 프로그래밍] 강성윤 지음 <루비페이퍼>

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함