kotlin 언어에서는 collection( list, map 등등..) 에서 제공하는 다양한 함수들이 존재하고 그 중에서 많이 쓰이고 유용한 것들을 알아보자!
: 각 요소에 수식을 실행한 결과를 반환한다.
예제 1
var a: List<Int> = listOf(1, 2, 3)
println(a.map { it * 10 })
결과 1
[10, 20, 30]
예제 2 ( Collection Map 에 적용 )
val peopleToAge = mapOf("Alice" to 20, "Bob" to 21)
println(peopleToAge.map { (name, age) -> "$name is $age years old" })
println(peopleToAge.map { it.value })
결과 2
[Alice is 20 years old, Bob is 21 years old]
[20, 21]
: 조건에 만족하는 요소들만 모아서 새 컬렉션을 반환한다.
예제 1
val numbers = listOf(1, 2, 3, 4)
println(numbers.filter { it > 2 })
결과
[3,4]
: 위 filter 와 동일하고 각 요소의 Index를 조건에 사용이 가능.
예제
val numbers = listOf("one", "two", "three", "four")
val filteredIdx = numbers.filterIndexed { index, s ->
(index != 0) && (s.length < 5)
}
println(filteredIdx)
결과
["two"]
: 각 요소에 접근이 가능. 반환값 없음.
예제
val numbers = listOf(1, 2, 3)
numbers.forEach {
println(it)
}
결과
1
2
3
: forEach 와 동일하고 각 요소의 Index에 접근이 가능. 반환값 없음.
예제
val numbers = listOf(1, 2, 3)
numbers.forEachIndexed { index, s ->
println("$index, $s")
}
결과
0, 1
1, 2
2, 3
: 컬렉션의 값들을 순차적으로 축적하는 함수. 초기값 O
예제
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.fold(10) { total, num ->
total + num
}
println(sum)
결과
// 10+1+2+3+4+5
25
: 컬렉션의 값들을 순차적으로 축적하는 함수. 초기값 X
예제
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { total, num ->
total + num
}
println(sum)
결과
// 1+2+3+4+5
15
: 특정 조건에 따라 Map으로 변경
key : 조건 변수
value : 조건에 만족하는 것들을 컬렉션타입의 리스트로
예제
val words = listOf("a", "abc", "ab", "def", "abcd")
val byLength = words.groupBy { it.length }
println(byLength) // map
println(byLength.keys) // key list
println(byLength.values) // value list<list>
결과
{1=[a], 3=[abc, def], 2=[ab], 4=[abcd]}
[1, 3, 2, 4]
[[a], [abc, def], [ab], [abcd]]