본문 바로가기
Kotlin

[코틀린] 배열 정렬하기

by Sky Titan 2020. 9. 26.
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

댓글