변환
map()
: 컬렉션 내 인자를 다른 값 혹은 타입으로 변환할 때 사용합니다.
val cities = listOf("Seoul", "Tokyo")
cities.map { city -> city.toUpperCase() }.forEach { print(it) } // 대문자로 변환
cities.map { city -> city.length }.forEach { print(it) } // length 변환
mapIndexed()
: 컬렉션 내 포함된 인자의 인덱스 값을 변환 함수 내에서 사용할 수 있습니다.
val numbers = 0..10
numbers.mapIndexed{ idx, number -> idx * number }.forEach{ print("$it ") } //변환 함수에서 각 인자와 인덱스를 곱한 값을 반환
mapNotNull()
: 컬렉션 내 각 인자를 변환함과 동시에, 변환한 결과가 널 값인 경우 이를 무시합니다.
val cities = listOf("Seoul", "Tokyo")
cities.mapNotNull{ city -> if(city.length <=5 ) city else null }.forEach{ println(it) } //이름의 길이가 5이하일 경우 이름 아니면 null반환
flatMap()
: map()함수와 유사하게 컬렉션 내 인자를 다른 형태로 변환해주는 역할을 합니다. 하지만 map()함수와 달리 flatMap()함수는 변환 함수의 변환형이 Iterable입니다. 따라서 하나의 인자에서 여러 개의 인자로 매핑이 필요한 경우에 사용합니다.
val numbers = 1..6
//1부터 시작하여 각 인자를 끝으로 하는 범위를 반환합니다.
number.flatMap { number -> 1..number }.forEach { print("$it ") }
결과 : 1 12 123 1234 12345 123456
groupBy()
: 컬렉션 내 인자들을 지정한 기준에 따라 분류하며, 각 인자들의 리스트를 포함하는 맵 형태로 결과를 반환
val cities = listOf("Seoul", "Tokyo", "Mountain View")
//도시 이름의 길이가 5이하면 "A" 아니면 "B"그룹에 대입
//여기에서 지정하는 이름을 반환하는 앱의 키 이름으로 사용됩니다.
cities.groupBy{ city -> if(city.length <=5) "A" else "B" }.forEach { key, cities -> println("key=$key cities=$cities") }
결과 : key A cities=[Seoul, Tokyo]
필터
filter()
: 컬렉션 내 인자들 중 주어진 조건과 일치하는 인자만 걸러주는 역할을 합니다.
val cities = listOf("Seoul", "Tokyo")
//도시 이름의 길이가 5이하인 항목만 통과
cities.filter { city -> city.length <= 5 }.forEach{ println(it) }
take() : 인자로 받은 개수만큼만을 인자로 갖는 리스트를 반환
takeLast() : take()함수와 반대로 뒤에서부터 이 함수의 인자로 받은 개수 만큼만을 인자로 갖는 리스트를 반환
takeWhile() : 첫 번째 인자부터 시작하여 주어진 조건을 만족하는 인자까지를 포함하는 리스트를 반환합니다.
takeLastWhile() : takeWhile() 함수와 반대로 뒤에서부터 주어진 조건을 만족하는 인자까지 포함하는 리스트를 반환합니다.
val cities = listOf("Seoul", "Tokyo", "Mountain View", "NYC", "Singapore")
//첫 번째 인자로부터 하나의 인자만 포함하도록 합니다.
cities.take(1).forEach { println(it) } // Seoul
//마지막 인자로부터 두 개의 인자만 포함하도록 합니다.
cities.takeLast(2).forEach { println(it) } // NYC, Singapore
//문자열의 길이가 5 이하인 조건을 만족할 때까지 해당하는 항목을 반환합니다.
cities.takeWhile { city -> city.length <= 5 }.forEach { println(it) } // Seoul, Tokyo
//뒤에서부터 시작하여, 문자열의 길이가 13 미만의 조건을 만족할 떄까지 해당하는 항목을 반환
cities.takeLastWhile{ city -> city.length < 13 }.forEach{ println(it) } // NYC, Singapore
drop() 함수는 take()함수의 반대 역할을 하며 조건을 만족하는 항목을 컬렉션에서 제외한 결과를 반환합니다.
drop()
dropLast()
dropWhile()
dropLastWhile()
first()
: 컬렉션 내 첫번째 인자를 반환합니다. 또 특정조건을 만족하는 첫 번째 인자를 반환하도록 구성하는 것도 가능합니다.
조건을 만족하는 인자가 없을 경우 NoSuchElementException 예외를 발생시키며, firstOrNull() 함수를 사용하면 예외 대신 null값을 반환 하도록 할 수 있습니다.
val cities = listOf("Seoul", "Tokyo", "Mountain View", "NYC")
//첫 번째, 마지막 인자를 반환
cities.first(), cities.last()
//문자열 길이가 5 이상인 첫 번째 인자를 반환
cities.first { city -> city.length > 5 }
//조건을 만족하는 첫 번째 인자를 반환하여, 없을 경우 null 값을 반환
cities.firstOrNull { city -> city.isEmpty() }
참조 :
'코틀린 & Java' 카테고리의 다른 글
LiveData와 StateFlow의 차이 (0) | 2021.12.27 |
---|---|
코틀린 코딩컨벤션 정리 (0) | 2021.12.13 |
Kotlin 코딩규칙 서식 (0) | 2021.07.07 |
Kotlin 코딩규칙 명명 규칙 (0) | 2021.07.07 |
Kotlin 코딩규칙 소스 코드 구성 (0) | 2021.07.07 |