-
[Kotlin] - List의 합집합, 차집합, 교집합언어/Kotlin 2022. 5. 8. 10:41반응형
차집합
차량 리스트(cars)가 있고, 필요하지 않은 차종 리스트(carClassNotNeed)가 있다. 차량 리스트에서 필요하지 않은 차량 리스트를 제거하려면 어떻게 해야 하는가?
data class Car( val carNumber: String, val carClass: String, ) val cars = listOf( Car(carNumber = "하12345-1", carClass = "아반떼"), Car(carNumber = "하12345-2", carClass = "아반떼"), Car(carNumber = "하12345-3", carClass = "소나타"), Car(carNumber = "하12345-4", carClass = "소나타 하이브리드"), ) val carClassesNotNeed = listOf("아반떼", "소나타")
1. 가독성 안 좋지만 바로 생각해 낼 수 있는 구현 (플래그 세우기)
val filteredCars = mutableListOf<Car>() cars.forEach { car -> var classNotNeedYn = false carClassesNotNeed.forEach { carClass -> if (car.carClass == carClass) { classNotNeedYn = true } } if (!classNotNeedYn) { filteredCars.add(car) } } .... = filteredCars.toList() // mutableList는 짧게 가져가는 좋다. println(filteredCars) // [Car(carNumber="하12345-4", carClass="소나타 하이브리드")]
2. filter, in 사용
val filteredCars = cars.filter { car -> car.carClass !in carClassesDoNotNeed } println(filteredCars) // [Car(carNumber="하12345-4", carClass="소나타 하이브리드")]
교집합
val filteredCars = cars.filter { car -> car.carClass in carClassesDoNotNeed } println(filteredCars) // [ // Car(carNumber = "하12345-1", carClass = "아반떼"), // Car(carNumber = "하12345-2", carClass = "아반떼"), // Car(carNumber = "하12345-3", carClass = "소나타"), // ]
합집합
val otherCars = listOf( Car(carNumber = "하12345-5", carClass = "소나타"), Car(carNumber = "하12345-6", carClass = "소나타 하이브리드"), ) val allCars = cars + otherCars println(allCars) // [ // Car(carNumber = "하12345-1", carClass = "아반떼"), // Car(carNumber = "하12345-2", carClass = "아반떼"), // Car(carNumber = "하12345-3", carClass = "소나타"), // Car(carNumber = "하12345-4", carClass = "소나타 하이브리드"), // Car(carNumber = "하12345-5", carClass = "소나타"), // Car(carNumber = "하12345-6", carClass = "소나타 하이브리드"), // ]
반응형'언어 > Kotlin' 카테고리의 다른 글
[EffectiveKotlin] 상속보다는 컴포지션을 사용하라 (0) 2022.06.01 [Kotlin in Action, Effective Kotlin] 제네릭과 변성 variance (0) 2022.05.29 [Kotlin In Action] 객체의 동등성: equals()와 해시 컨테이너: hashCode() 그리고 data class (0) 2022.04.26 [Kotlin In Action] 로컬 함수와 확장 (0) 2022.04.25 [Kotlin In Action] 선택 표현과 처리 when (0) 2022.04.23