인프런의 강의를 보고 정리한 글입니다.
Filter 와 Map
필터와 맵을 처리하기 위한 다음과 같은 메서드들이 있다.
filter, filterIndexed, map, mapIndexed, mapNotNull
// 1. Only Apple
val apples = fruits.filter { fruit -> fruit.name == "Apple" }
// 2. Apple's Price
val applePrices = fruits.filter { fruit -> fruit.name == "Apple}
.map { fruit -> fruit.currentPrice }
// 3. replace filterFruits to function type
private fun filterFruits(
fruits : List<Fruit>, filter: (Fruit) -> Boolean
) : List<Fruit> {
return fruits.filter(filter)
}
다양한 컬렉션 처리 기능
// 조건을 모두 불만족했을 때 true
val isNoApple = fruits.name { fruit -> fruit.name == "Apple" }
// 조건을 모두 만족했을 때 true
val isAllApple = fruits.all { fruit -> fruit.name == "Apple" }
// 조건을 하나라도 만족하면 true
val isAnyApple = fruits.any { fruit -> fruit.factoryPrice >= 10_000 }
// 총 과일 갯수가 몇개인지?
val fruitCount = fruits.count()
// 오름차순 정렬
val fruitCount = fuirts.sortedBy { fruit -> fruit.currentPrice }
// 변형된 값을 기준으로 중복 제거
val distinctFruitNames = fruits.distinctBy { fruit -> first.name }
.map { fruit -> fruit.name }
List 를 Map 으로
// 과일 이름 -> List<과일> Map 생성
val map : Map<String, List<Fruit>> = fruit.groupBy { fruit -> fruit.name }
// 과일 하나가 들어가는 경우, 중복되지 않은 키를 가지고 map 을 만들 때 사용
val map : Map<Long, Fruit> fruits.associateBy { fruit -> fruit.id }
// 과일 이름을 기준으로 List 출고가 map 만들기
val map : Map<String, List<Long>> = fruits.groupBy ({fruits -> fuirt.name}, { fruit -> fruit.factoryPrice })
중첩된 컬렉션 처리
flatMaps, flattern
'[ Kotlin ]' 카테고리의 다른 글
코틀린의 scope function - 20강 (0) | 2024.08.29 |
---|---|
코틀린에서 부가적으로 알아둘만한 것들 - 19강 (0) | 2024.08.29 |
코틀린에서 함수 및 람다를 다루는 방법 - 16강, 17강 (0) | 2024.08.28 |
코틀린에서 배열과 컬렉션을 다루는 방법 - 15강 (0) | 2024.08.28 |
코틀린에서 다양한 클래스를 다루는 방법 - 14강 (0) | 2024.08.28 |