코틀린에서 컬렉션을 정렬하기 위해 사용하는 함수들인 sorted(), sort(), sortedWith(), sortWith(), sortedBy(), sortBy() 에 대해서 설명하겠습니다.
1. sorted()
sorted() 함수는 데이터 변경이 안되는 리스트(Immutable List)를 정렬할 때 사용합니다.
sorted()는 리스트의 원본을 변경하지 않고, 정렬된 리스트를 생성하여 리턴합니다.
아래는 Immutable 리스트를 sorted()로 정렬하는 예제입니다.
val numbers = listOf(5, 2, 8, 3, 1)
val sortedNumbers = numbers.sorted()
println(sortedNumbers)
// Output: [1, 2, 3, 5, 8]
2. sort()
sort()는 데이터 변경이 가능한 리스트(Mutable List)를 정렬할 때 사용합니다.
리스트 자신이 갖고 있는 요소의 순서를 변경합니다.
아래는 Mutable 리스트를 sort()로 정렬하는 예제입니다.
val numbers = mutableListOf(5, 2, 8, 3, 1)
numbers.sort()
println(numbers)
// Output: [1, 2, 3, 5, 8]
추가 정렬 함수: sortedDescending()와 sortDescending()
- sortedDescending(): 컬렉션을 내림차순으로 정렬한 새로운 리스트를 반환합니다.
- sortDescending(): 컬렉션을 내림차순으로 제자리에서 정렬합니다
val numbers = listOf(5, 2, 8, 3, 1)
val sortedNumbersDescending = numbers.sortedDescending()
println(sortedNumbersDescending)
// Output: [8, 5, 3, 2, 1]
val mutableNumbers = mutableListOf(5, 2, 8, 3, 1)
mutableNumbers.sortDescending()
println(mutableNumbers)
// Output: [8, 5, 3, 2, 1]
3. sortedWith() , sortWith()
sortedWith()와 sortWith()는 정렬 규칙으로 Comparator를 지정할 수 있습니다. 즉, Comparator를 변경해 자신이 원하는 조건으로 리스트를 정렬하는 것입니다.
- sortedWith() : Immutable List에 사용 -> sorted()와 마찬가지로 정렬된 새로운 리스트를 반환
- sortWith() : Mutable List에 사용 -> sort()와 마찬가지로 자기 자신을 정렬
sortedWith() 예시
data class Person(val name: String, val age: Int)
fun main() {
val people = listOf(
Person("Alice", 25),
Person("Bob", 30),
Person("Charlie", 20)
)
val sortedPeople = people.sortedWith(compareBy { it.age })
println(sortedPeople)
// Output: [Person(name=Charlie, age=20), Person(name=Alice, age=25), Person(name=Bob, age=30)]
}
sortWith() 예시
data class Person(val name: String, val age: Int)
fun main() {
val people = mutableListOf(
Person("Alice", 25),
Person("Bob", 30),
Person("Charlie", 20)
)
people.sortWith(compareBy { it.age })
println(people)
// Output: [Person(name=Charlie, age=20), Person(name=Alice, age=25), Person(name=Bob, age=30)]
}
4. sortedBy(), sortBy()
sortedBy()와 sortBy()는 리스트 요소가 1개의 데이터 타입으로 이루어지지 않고, 내부에 여러 객체를 갖고 있는 타입일 때, 어떤 객체를 비교해서 정렬할 지 결정할 때 사용합니다.
- sortedBy() : Immutable List에서 사용 -> sorted()와 마찬가지로 정렬된 새로운 리스트를 반환
- sortBy() : Mutable List에서 사용 -> Mutable List에 사용 -> sort()와 마찬가지로 자기자신을 정렬
sortedBy() 예시
data class Person(val name: String, val age: Int)
fun main() {
val people = listOf(
Person("Alice", 25),
Person("Bob", 30),
Person("Charlie", 20)
)
val sortedPeople = people.sortedBy { it.age }
println(sortedPeople)
// Output: [Person(name=Charlie, age=20), Person(name=Alice, age=25), Person(name=Bob, age=30)]
}
sortBy() 예시
data class Person(val name: String, val age: Int)
fun main() {
val people = mutableListOf(
Person("Alice", 25),
Person("Bob", 30),
Person("Charlie", 20)
)
people.sortBy { it.age }
println(people)
// Output: [Person(name=Charlie, age=20), Person(name=Alice, age=25), Person(name=Bob, age=30)]
}
'코딩테스트 준비(kotlin) > 문법정리' 카테고리의 다른 글
[kotlin 코틀린] groupBy와 groupingBy (0) | 2024.06.21 |
---|---|
[kotlin] distinct 중복 제거 (0) | 2024.05.22 |
kotlin - filter (0) | 2024.04.22 |
[kotlin] 코틀린 입력 및 출력 (1) | 2023.10.16 |
[kotlin] 람다표현식 (0) | 2023.08.06 |