| 메서드 | 사용 목적 | 장점 | 단점 |
|---|---|---|---|
sorted |
기본 정렬 (순서 정의된 타입) | 간단하고 직관적 | 기본 Ordering만 사용 가능 |
sortBy |
특정 속성(키)을 기준으로 정렬 | 가독성이 높고 명확한 기준 제공 | 다중 기준 정렬이 불편할 수 있음 |
sortWith |
사용자 정의 비교 함수 제공 | 고도로 유연한 정렬 가능 | 비교 함수가 복잡할 경우 비가독성 |
sorted리스트의 요소가 Ordering 타입 클래스(예: Int, String)를 구현하고 있다면 기본 정렬 순서로 정렬할 수 있습니다.
val numbers = List(3, 1, 4, 1, 5, 9)
val sortedNumbers = numbers.sorted
println(sortedNumbers) // List(1, 1, 3, 4, 5, 9)
val words = List("banana", "apple", "cherry")
val sortedWords = words.sorted
println(sortedWords) // List(apple, banana, cherry)
sortBy특정 속성(키)을 기준으로 정렬할 때 사용합니다.
case class Person(name: String, age: Int)
val people = List(Person("Alice", 25), Person("Bob", 20), Person("Charlie", 30))
// 나이로 정렬
val sortedByAge = people.sortBy(_.age)
println(sortedByAge)
// List(Person(Bob,20), Person(Alice,25), Person(Charlie,30))
// 이름으로 정렬
val sortedByName = people.sortBy(_.name)
println(sortedByName)
// List(Person(Alice,25), Person(Bob,20), Person(Charlie,30))
sortWith두 요소를 비교하는 사용자 정의 함수를 제공하여 정렬할 수 있습니다.
val numbers = List(3, 1, 4, 1, 5, 9)
// 내림차순 정렬
val descending = numbers.sortWith(_ > _)
println(descending) // List(9, 5, 4, 3, 1, 1)
// 문자열 길이로 정렬
val words = List("banana", "apple", "cherry")
val sortedByLength = words.sortWith(_.length < _.length)
println(sortedByLength) // List(apple, cherry, banana)
1. 복합 기준으로 정렬 (다중 키 정렬)
val people = List(Person("Alice", 25), Person("Bob", 25), Person("Charlie", 20))
// 나이로 정렬, 나이가 같으면 이름으로 정렬
val sorted = people.sortBy(p => (p.age, p.name))
println(sorted)
// List(Person(Charlie,20), Person(Alice,25), Person(Bob,25))