본문 바로가기

안드로이드/Kotlin

[Kotlin] 스트림 함수(확장 함수) - 조합 및 합계, 기타

조합 및 합계

zip() 함수는 두 컬렉션 내의 자료를 조합하여 새로운 자료를 만들 때 사용한다. 두 컬렉션 간 자료의 개수는 달라도 문제 없으며, 다르다면 조합에 사용하는 컬렉션 중 더 적은 쪽을 따라간다. 기본적으로는 Pair의 형태로 자료를 조합하고, 원하는 경우 조합 규칙을 지정할 수 있다.

val cityCodes = listOf("SEO", "TOK", "MTV", "NYC")
val cityNames = listOf("Seoul", "Tokyo", "Mountain View")

cityCode.zip(cityNames)
        .forEach{pair -> 
              println("${pair.first}:${pair.second}")
        }
//SEO:Seoul
//TOK:Tokyo
//MTV:Mountain View

cityCode.zip(cityNames) {code, name -> "$code ($name)"}
        .forEach{println(it)}
//SEO (Seoul)
//TOK (Tokyo)
//MTV (Mountain View)

 

joinToString() 함수는 컬렉션 내 자료를 문자열 형태로 변환함과 동시에, 이를 조합하여 하나의 문자열로 생성한다.

val cities = listOf("Seoul", "Tokyo", "Mountain View", "NYC", "Singapore")

println(cities.joinToString())
//Seoul, Tokyo, Mountain View, NYC, Singapore

println(cities.joinToString(seperator="|"))
//Seoul|Tokyo|Mountain View|NYC|Singapore

 

count() 함수는 컬렉션 내 포함된 자료의 개수를 반환한다. 이는 size로 대체할 수 있지만, count에 조건을 걸어 특정 조건에 해당 하는 요소의 수만 반환하도록 할 수 있다.

val cities = listOf("Seoul", "Tokyo", "Mountain View", "NYC", "Singapore")

println(cities.count())
//5

println(cities.count{city -> city.length > 5})
//2

기타

any() 함수는 컬렉션 내에 해당하는 자료가 존재하면 true, 그렇지 않다면 false를 반환한다.

none() 함수는 컬렉션 내에 조건에 만족하는 자료가 존재하지 않다면 true, 그렇지 않다면 false를 반환한다.

val cities = listOf("Seoul", "Tokyo", "Mountain View", "NYC", "Singapore")

print(cities.any{city -> city.length <=5 })
//true

print(cities.none{city -> city.isEmpty()})
//true

 

max() 함수는 컬렉션 내의 최대값을 반환한다.

min() 함수는 컬렉션 내의 최소값을 반환한다.

average() 함수는 평균을 반환한다.

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

println(numbers.max())
//5

println(numbers.min())
//1

println(numbers.average())
//3