[Kotlin] Collection Function

Twaun·2022년 4월 10일
0

Kotlin

목록 보기
2/6

Kotlin Collection 에서 제공하는 유용한 함수들에 대해서 알아보자!!

kotlin 언어에서는 collection( list, map 등등..) 에서 제공하는 다양한 함수들이 존재하고 그 중에서 많이 쓰이고 유용한 것들을 알아보자!

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]

filter

: 조건에 만족하는 요소들만 모아서 새 컬렉션을 반환한다.

예제 1

val numbers = listOf(1, 2, 3, 4)  

println(numbers.filter { it > 2 })

결과

[3,4]

filterIndexed

: 위 filter 와 동일하고 각 요소의 Index를 조건에 사용이 가능.

예제

val numbers = listOf("one", "two", "three", "four")

val filteredIdx = numbers.filterIndexed { index, s ->
	(index != 0) && (s.length < 5)  
}

println(filteredIdx)

결과

["two"]

forEach

: 각 요소에 접근이 가능. 반환값 없음.

예제

val numbers = listOf(1, 2, 3)  

numbers.forEach { 
	println(it) 
}

결과

1
2
3

forEachIndexed

: forEach 와 동일하고 각 요소의 Index에 접근이 가능. 반환값 없음.

예제

val numbers = listOf(1, 2, 3)  

numbers.forEachIndexed { index, s -> 
	println("$index, $s") 
}

결과

0, 1
1, 2
2, 3

fold

: 컬렉션의 값들을 순차적으로 축적하는 함수. 초기값 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  

reduce

: 컬렉션의 값들을 순차적으로 축적하는 함수. 초기값 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  

groupby

: 특정 조건에 따라 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]]
profile
Android Developer

0개의 댓글