728x90
원본 배열 정렬
1. sort()
- 원본 배열을 오름차순으로 정렬한다.
import java.util.*
fun main() {
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1 )
arr.sort()
println(Arrays.toString(arr))
/* 결과
[0, 1, 2, 3, 4, 5, 6, 7]
*/
}
2. sortDescending()
- 원본 배열을 내림차순으로 정렬한다.
import java.util.*
fun main() {
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1 )
arr.sortDescending()
println(Arrays.toString(arr))
/* 결과
[7, 6, 5, 4, 3, 2, 1, 0]
*/
}
정렬된 새로운 배열 반환
1. sortedArray()
- 오름차순으로 정렬된 새로운 배열을 반환
- 원본 배열은 그대로 둔다.
import java.util.*
fun main() {
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1 )
var arr2 = arr.sortedArray()
println(Arrays.toString(arr2))
/* 결과
[0, 1, 2, 3, 4, 5, 6, 7]
*/
}
2. sortedArrayDescending()
- 내림차순으로 정렬된 새로운 배열을 반환
- 원본 배열은 그대로 둔다.
import java.util.*
fun main() {
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1 )
var arr2 = arr.sortedArrayDescending()
println(Arrays.toString(arr2))
/* 결과
[7, 6, 5, 4, 3, 2, 1, 0]
*/
}
정렬 후 List를 반환
1. sorted()
- 오름차순 정렬 후 List를 반환한다.
- 원본 배열은 그대로 둔다.
import java.util.*
fun main() {
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1 )
var list = arr.sorted()
println(list.toString())
/* 결과
[0, 1, 2, 3, 4, 5, 6, 7]
*/
}
2. sortedDescending()
- 내림차순 정렬 후 List를 반환한다.
- 원본 배열은 그대로 둔다.
import java.util.*
fun main() {
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1 )
var list = arr.sortedDescending()
println(list.toString())
/* 결과
[7, 6, 5, 4, 3, 2, 1, 0]
*/
}
데이터 클래스 정렬
1. sortBy(), sortByDescending()
- 요소의 길이 등과 같이 특정 표현식을 기준으로 정렬한다.
- 데이터 클래스를 정렬할 때 유용하다.
import java.util.*
data class Person(var name : String, var age : Int)
fun main() {
var arr = arrayOf(Person("Park", 10), Person("Kim", 12), Person("Choi", 5), Person("Lee", 19))
arr.sortBy { it.name.length } //이름 길이를 기준으로 오름차순 정렬
println(Arrays.toString(arr))
arr.sortByDescending { it.age } //나이를 기준으로 내림차순 정렬
println(Arrays.toString(arr))
/* 결과
[Person(name=Kim, age=12), Person(name=Lee, age=19), Person(name=Park, age=10), Person(name=Choi, age=5)]
[Person(name=Lee, age=19), Person(name=Kim, age=12), Person(name=Park, age=10), Person(name=Choi, age=5)]
*/
}
sortWith()를 이용해서 정렬하기
1. Comparator
- sortWith() 안에 comparator를 선언해서 정렬할 수 있다.
import java.util.*
data class Person(var name : String, var age : Int)
fun main() {
var arr = arrayOf(Person("Park", 10), Person("Kim", 12), Person("Choi", 5), Person("Lee", 19))
arr.sortWith(kotlin.Comparator { o1, o2 ->
o1.age - o2.age
}) //나이를 기준으로 오름차순 정렬
println(Arrays.toString(arr))
/* 결과
[Person(name=Choi, age=5), Person(name=Park, age=10), Person(name=Kim, age=12), Person(name=Lee, age=19)]
*/
}
2. compareBy(), compareByDescending()
- sortWith()에 comparator 대신 삽입 가능하다.
- 정렬 기준이 되는 속성들의 순서를 정할 수 있다.
- EX) 이름 기준으로 정렬 → 나이 기준 정렬
import java.util.*
data class Person(var name : String, var age : Int)
fun main() {
var arr = arrayOf(Person("Park", 10), Person("Kim", 12), Person("Kim", 5), Person("Lee", 19))
arr.sortWith(compareBy({it.name}, {it.age})) //먼저 이름 기준 오름차순 정렬 -> 나이 기준 오름 차순 정렬
println(Arrays.toString(arr))
/* 결과
[Person(name=Kim, age=5), Person(name=Kim, age=12), Person(name=Lee, age=19), Person(name=Park, age=10)]
*/
}
728x90
'Kotlin' 카테고리의 다른 글
[코틀린] 배열 평탄화 flatten() (0) | 2020.10.04 |
---|---|
[코틀린] 비트 연산자 (0) | 2020.09.28 |
[코틀린] 배열 (0) | 2020.09.26 |
[코틀린][자바] 다차원 배열 비교, 출력 (0) | 2020.09.24 |
[코틀린] forEach, forEachIndexed (0) | 2020.09.24 |
댓글