#25 Kotlin Koans Collections/Sort 해설

1 소개



Kotlin 공식 레퍼런스의 Kotlin Koans Collections/Sort의 해설 기사입니다.

Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.

다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!

한 번 각자로 도전하고 나서, 눈에 띄게 된다고 생각합니다

2 sorted()/sortedBy()



sorted() : 함수의 호출 원래의 콜렉션의 요소를 50 음순(알파벳순)으로 재 배열해 돌려준다.
(※1문자째가 공통의 요소가 있으면 2문자째로 판단한다.)

sortedBy() : 함수에 건네주는 인수(selector)의 반환값의 결과에 응해, 함수의 호출 원래의 콜렉션의 요소를 재정렬해 돌려준다.
(※sort()와 달리, 50음순과는 무관.)

kotlin koans의 예를 인용합니다.
listOf("bbb", "a", "cc").sorted() == listOf("a", "bbb", "cc")
listOf("bbb", "a", "cc").sortedBy { it.length } == listOf("a", "cc", "bbb")

3 Collections/Sort 해설



Kotlin Koans Collections/Sort의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.

본문과 코드를 살펴보자.

Implement Shop.getCustomersSortedByNumberOfOrders() using sorted or sortedBy.
listOf("bbb", "a", "cc").sorted() == listOf("a", "bbb", "cc")
listOf("bbb", "a", "cc").sortedBy { it.length } == listOf("a", "cc", "bbb")

Sort
// Return a list of customers, sorted by the ascending number of orders they made
fun Shop.getCustomersSortedByNumberOfOrders(): List<Customer> = TODO()

각 클래스의 속성은 다음과 같습니다.

Shop 클래스: name(String형), customers(List< Customer >형)

Customer 클래스: name(String형), city(City형), orders(List< Order >형)
Shop.getCustomersSortedByNumberOfOrders(): List<Customer>를 호출하여,
Shop 프로퍼티 customers의 요소(Customer형 인스턴스)의 oreders(Order가 요소의 List)의 요소수가 적은 순서로 나열된 List를 돌려주도록(듯이) 구현합니다.

List의 요소 수를 나타내는 데 size 속성을 사용합니다.

따라서 구현하는 코드는 다음과 같습니다.

Sort
fun Shop.getCustomersSortedByNumberOfOrders(): List<Customer> = customers.sortedBy{ it.orders.size }

4 마지막으로



다음은 Kotlin Koans Collections/Sum의 해설을 하겠습니다

좋은 웹페이지 즐겨찾기