어 나 갱수.

[Kotlin] 리스트 정렬(sort, sortBy, sortWith) 😙 본문

Java

[Kotlin] 리스트 정렬(sort, sortBy, sortWith) 😙

김경수 2024. 1. 27. 03:10
728x90

 

오늘은 Kotlin을 사용하게 된다면 많이 사용하게 되는 리스트 정렬 관련된 함수들을 알아보겠습니다.

 

Immutable 리스트 정렬

sorted() 함수는 데이터 변경이 되지 않는 리스트(Immutable)를 정렬할 때 사용합니다. sorted() 함수는 기존 리스트의 원본을 변경하지 않고 정렬된 리스트를 생성하여 리턴합니다. 

val list = listOf(20, 100, 5, 60, 40)
val sortedList = list.sorted()

println("List : $list")
println("SortedList : $sortedList")

 

결과

List : [20, 100, 5, 60, 40]
SortedList : [5, 20, 40, 60, 100]

 

원본은 list는 그대로 반환하고 sortedList라는 새로운 리스트를 생성하였습니다.

 

Mutable 리스트 정렬

sort() 함수는 데이터가 변경 가능한 리스트(Mutable)를 정렬할때 사용합니다. sort() 함수는 기존 리스트의 원본을 변경합니다.

val mutableList = mutableListOf(20, 100, 5, 60, 40)
mutableList.sort()

println("MutableList : $mutableList")

 

결과

MutableList : [5, 20, 40, 60, 100]

 

역순으로 정렬(오름차순, 내림차순)

정렬하려는 리스트가 Immutable이냐, Mutable이냐에 따라 역순으로 정렬하는 메서드가 다릅니다.

  • reversed() : Immutable 리스트에 사용합니다. 기존 리스트의 원소를 바꾸는 것이 아니라 바꾼 리스트를 반환합니다.
  • reverse() : Mutable 리스트에 사용합니다. 기존 리스트의 원소를 바꿉니다.

sortedWith(), sortWith()

sortedWith()는 정렬 규칙으로 Comparator를 지정할 수 있습니다. Comparator를 변경해 자신이 원하는 조건으로 리스트를 정렬하는 것입니다.

  • sortedWith() : Immutable List에 사용 -> sorted()와 마찬가지로 새로운 리스트를 반환합니다.
  • sortWith() : Mutable List에 사용 -> sort()와 마찬가지로 자기 자신을 정렬합니다.

sortedBy(), sortBy()

sortedBy()는 리스트 요소가 1개의 데이터 타입으로 이루어지지 않고, 내부에 여러 객체를 갖고 있는 타입일 때, 어떤 객체를 비교해서 정렬할지 결정할 때 사용합니다.

 

  • sortedBy() : Immutable List에 사용 -> sorted()와 마찬가지로 새로운 리스트를 반환합니다.
  • sortBy() : Mutable List에 사용 -> sort()와 마찬가지로 자기 자신을 정렬합니다.

정리

  • sorted()와 같이 "~~ed"로 끝나는 정렬 메서드는 기존 리스트와 별개로 새로운 리스트를 만들어서 반환합니다.
  • sort()와 같이 "~~ed"로 끝나지 않은 정렬 메서드는 자기 자신을 정렬합니다.
728x90