Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- ViewModel
- CollapsingToolbarLayout
- Android
- 알고리즘
- DataBinding
- room
- Algorithm
- 알림
- LiveData
- CustomView
- Navigation
- 백준
- 코틀린
- View
- AppBarLayout
- Coroutine
- lifecycle
- kotlin
- notification
- hilt
- activity
- CoordinatorLayout
- recyclerview
- onMeasure
- BOJ
- HTTP
- 안드로이드
- Behavior
- onLayout
- sqlite
Archives
- Today
- Total
개발일지
Kotlin in A..Z - Aggregate Operation 본문
any()
Collection에 하나라도 있으면 true
=> 만족하는 하나를 찾을때까지 검사한다.
fun main() {
val list0 = listOf<Int>()
println(list0.any())
val list1 = listOf(1, 2, 3)
println(list1.any())
val list2 = listOf(1, 2, 3, 1, 2, 3)
list2.any {
println(it)
it == 3
}
}
false
true
1
2
3
all()
모든 원소가 일치하면 true
=> 전부다 검사하거나, 중간에 일치하지 않는 원소가 있으면 끝난다.
fun main() {
val list0 = listOf<Int>()
println(list0.all { it > 0 })
val list1 = listOf(1, 2, 3)
println(list1.all { it > 2 })
val list3 = listOf(1, 2, 3, 1, 2, 3)
list3.all {
println(it)
it > 0
}
}
true
false
1
2
3
1
2
3
count
일치하는 원소의 갯수를 반환한다.
=> 처음부터 끝까지 검사한다.
fun main() {
val array = arrayOf(1, 2, 3)
println(array.count())
println(array.count {
println(it)
it > 2
})
}
3
1
2
3
1
fold
왼쪽에서 오른쪽으로 진행하며 연산을 수행하는 함수이다.
fun main() {
val array = arrayOf(1, 2, 3, 4, 5)
println(array.fold(0) { acc, i ->
println("ACC : $acc, I : $i")
acc + i
})
}
ACC : 0, I : 1
ACC : 1, I : 2
ACC : 3, I : 3
ACC : 6, I : 4
ACC : 10, I : 5
15
foldRight
fold의 반대방향
fun main() {
val array = arrayOf(1, 2, 3, 4, 5)
println(array.foldRight(0) { acc, i ->
println("ACC : $acc, I : $i")
acc + i
})
}
ACC : 5, I : 0
ACC : 4, I : 5
ACC : 3, I : 9
ACC : 2, I : 12
ACC : 1, I : 14
15
forEach
모든 원소를 접근하며 action을 실행한다.
fun main() {
val list = listOf(1, 2, 3)
list.forEach {
println(it)
}
}
1
2
3
forEachIndexed
forEach에 Index를 추가한 버전
fun main() {
val list = listOf(1, 2, 3)
list.forEachIndexed { index, value ->
println("Index : $index => Value : $value")
}
}
Index : 0 => Value : 1
Index : 1 => Value : 2
Index : 2 => Value : 3
maxOf
특정한 값에 대한 최대값
data class Node(
var index: Int,
var dist: Long
)
fun main() {
val list = listOf(Node(0, 2), Node(1, 4), Node(2, 0), Node(-1, 4))
println(list.maxOf { it.dist })
}
4
maxOfWith
maxOf에 Comparator을 지정할 수 있다.
data class Node(
var index: Int,
var dist: Long
)
fun main() {
val list = listOf(Node(0, 2), Node(1, 4), Node(2, 0), Node(-1, 4))
println(list.maxOf { it.dist })
println(list.maxOfWith(compareBy({it.dist}, {-it.index}), {it}))
}
4
Node(index=-1, dist=4)
none
조건에 만족하는 요소가 없으면 true
=> 처음부터 확인하고 조건에 만족하는 요소가 있으면 false를 반환하며 종료
fun main() {
val list = listOf(1, 2, 3)
println(list.none {
println(it)
it < 0}
)
}
1
2
3
true
reduce
fold와 비슷하지만 초기값이 원소의 첫번째 값이다.
fun main() {
val list = listOf(1, 2, 3)
println(list.reduce { acc, i ->
acc + i
})
}
6
'Kotlin (코틀린)' 카테고리의 다른 글
Kotlin in A..Z - Gson (0) | 2021.06.06 |
---|---|
Kotlin in A..Z - Collections (Filtering Operation) (0) | 2020.12.02 |
Kotlin in A..Z - Collection (0) | 2020.11.27 |
Kotlin in A..Z - Coroutine(5) CoroutineScope (0) | 2020.10.27 |
Kotlin in A..Z - Coroutine(4) async (0) | 2020.10.27 |
Comments