#24 Kotlin Koans Collections/Max min 해설
1 소개
Kotlin 공식 레퍼런스의 Kotlin Koans Collections/Max min의 해설 기사입니다.
Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.
다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!
일단 각자 도전하고 나서 볼 수 있다고 생각합니다
2 max()/min()/maxBy()/minBy()
max() : 컬렉션의 요소의 최대치를 돌려준다.
min() : 컬렉션의 요소의 최소치를 돌려줍니다.
maxBy() : 컬렉션이 건네주는 인수(selector)로서 건네주는 조건식의 반환값 중, 최대의 것을 돌려준다.
minBy() : 컬렉션이 건네주는 인수(selector)로서 건네주는 조건식의 반환값 중, 최소의 것을 돌려준다.
(모든 함수는 Kotlin1.4 에서 Deprecated로 되어 있습니다(2020년 8월 17일부터). 각각 대체 함수가 준비되어 있으므로 한번 조사해 보세요.)
3 Collections/Max min의 해설
Kotlin Koans Collections/Max min 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Implement Shop.getCustomerWithMaximumNumberOfOrders() and Customer.getMostExpensiveOrderedProduct() using max, min, maxBy, or minBy.
listOf(1, 42, 4).max() == 42
listOf("a", "ab").minBy { it.length } == "a"
Max_min// Return a customer whose order count is the highest among all customers
fun Shop.getCustomerWithMaximumNumberOfOrders(): Customer? = TODO()
// Return the most expensive product which has been ordered
fun Customer.getMostExpensiveOrderedProduct(): Product? = TODO()
Shop.getCustomerWithMaximumNumberOfOrders(): Customer?
에서 생각해 봅시다.
각 클래스의 속성은 다음과 같습니다.
Shop 클래스: name(String형), customers(List< Customer >형)
Customer 클래스: name(String형), city(City형), orders(List< Order >형)
Order 클래스: products(List< Product >형), isDelivered(Boolean형)
Shop의 속성 customers의 orders(Order를 요소로 한다) 중 요소수가 최대의 것을 돌려주도록(듯이) 구현합니다.
요소 수를 나타내려면 컬렉션 클래스 속성 크기을 사용합니다.
따라서 다음과 같은 구현이 됩니다.
Max_minfun Shop.getCustomerWithMaximumNumberOfOrders(): Customer? = customers.maxBy{it.orders.size}
다음으로 Customer.getMostExpensiveOrderedProduct(): Product?
에 대해 생각해 봅시다.
각 클래스의 속성은 다음과 같습니다.
Customer 클래스: name(String형), city(City형), orders(List< Order >형)
Order 클래스: products(List< Product >형), isDelivered(Boolean형)
Product 클래스: name(String형), price(Double형)
Customer 프로퍼티 orders(Order 인스턴스의 List)의 products(Product 인스턴스의 List) 중 최대의 price를 가지는 것을 돌려주도록(듯이) 구현합니다.
먼저 flatMap()
를 사용하여 Customer에서 구입한 제품을 추출합니다.
Max_minfun Customer.getMostExpensiveOrderedProduct(): Product? = orders.flatMap{it.products}
그 중에서, maxBy()
를 이용해 최대의 price를 가지는 것을 돌려주도록(듯이) 구현합니다.
따라서 최종 코드는 다음과 같습니다.
Max_minfun Customer.getMostExpensiveOrderedProduct(): Product? = orders.flatMap{it.products}.maxBy{it.price}
4 마지막으로
다음은 Kotlin Koans Collections/Sort의 해설을합니다.
Reference
이 문제에 관하여(#24 Kotlin Koans Collections/Max min 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/5078841b2a708c118dee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
max() : 컬렉션의 요소의 최대치를 돌려준다.
min() : 컬렉션의 요소의 최소치를 돌려줍니다.
maxBy() : 컬렉션이 건네주는 인수(selector)로서 건네주는 조건식의 반환값 중, 최대의 것을 돌려준다.
minBy() : 컬렉션이 건네주는 인수(selector)로서 건네주는 조건식의 반환값 중, 최소의 것을 돌려준다.
(모든 함수는 Kotlin1.4 에서 Deprecated로 되어 있습니다(2020년 8월 17일부터). 각각 대체 함수가 준비되어 있으므로 한번 조사해 보세요.)
3 Collections/Max min의 해설
Kotlin Koans Collections/Max min 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Implement Shop.getCustomerWithMaximumNumberOfOrders() and Customer.getMostExpensiveOrderedProduct() using max, min, maxBy, or minBy.
listOf(1, 42, 4).max() == 42
listOf("a", "ab").minBy { it.length } == "a"
Max_min// Return a customer whose order count is the highest among all customers
fun Shop.getCustomerWithMaximumNumberOfOrders(): Customer? = TODO()
// Return the most expensive product which has been ordered
fun Customer.getMostExpensiveOrderedProduct(): Product? = TODO()
Shop.getCustomerWithMaximumNumberOfOrders(): Customer?
에서 생각해 봅시다.
각 클래스의 속성은 다음과 같습니다.
Shop 클래스: name(String형), customers(List< Customer >형)
Customer 클래스: name(String형), city(City형), orders(List< Order >형)
Order 클래스: products(List< Product >형), isDelivered(Boolean형)
Shop의 속성 customers의 orders(Order를 요소로 한다) 중 요소수가 최대의 것을 돌려주도록(듯이) 구현합니다.
요소 수를 나타내려면 컬렉션 클래스 속성 크기을 사용합니다.
따라서 다음과 같은 구현이 됩니다.
Max_minfun Shop.getCustomerWithMaximumNumberOfOrders(): Customer? = customers.maxBy{it.orders.size}
다음으로 Customer.getMostExpensiveOrderedProduct(): Product?
에 대해 생각해 봅시다.
각 클래스의 속성은 다음과 같습니다.
Customer 클래스: name(String형), city(City형), orders(List< Order >형)
Order 클래스: products(List< Product >형), isDelivered(Boolean형)
Product 클래스: name(String형), price(Double형)
Customer 프로퍼티 orders(Order 인스턴스의 List)의 products(Product 인스턴스의 List) 중 최대의 price를 가지는 것을 돌려주도록(듯이) 구현합니다.
먼저 flatMap()
를 사용하여 Customer에서 구입한 제품을 추출합니다.
Max_minfun Customer.getMostExpensiveOrderedProduct(): Product? = orders.flatMap{it.products}
그 중에서, maxBy()
를 이용해 최대의 price를 가지는 것을 돌려주도록(듯이) 구현합니다.
따라서 최종 코드는 다음과 같습니다.
Max_minfun Customer.getMostExpensiveOrderedProduct(): Product? = orders.flatMap{it.products}.maxBy{it.price}
4 마지막으로
다음은 Kotlin Koans Collections/Sort의 해설을합니다.
Reference
이 문제에 관하여(#24 Kotlin Koans Collections/Max min 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/5078841b2a708c118dee
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
listOf(1, 42, 4).max() == 42
listOf("a", "ab").minBy { it.length } == "a"
// Return a customer whose order count is the highest among all customers
fun Shop.getCustomerWithMaximumNumberOfOrders(): Customer? = TODO()
// Return the most expensive product which has been ordered
fun Customer.getMostExpensiveOrderedProduct(): Product? = TODO()
fun Shop.getCustomerWithMaximumNumberOfOrders(): Customer? = customers.maxBy{it.orders.size}
fun Customer.getMostExpensiveOrderedProduct(): Product? = orders.flatMap{it.products}
fun Customer.getMostExpensiveOrderedProduct(): Product? = orders.flatMap{it.products}.maxBy{it.price}
다음은 Kotlin Koans Collections/Sort의 해설을합니다.
Reference
이 문제에 관하여(#24 Kotlin Koans Collections/Max min 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/5078841b2a708c118dee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)