Kotlin Collection

[Kotlin] sortedWith()

별볼일있는 개발자 2024. 9. 10. 12:55

1. 정렬이란

정렬이라는 것은 일종의 조건에 맞게 아이템들을 나열하는 것을 말한다.

이걸 프로그래밍에서 이야기해보면 특정 조건에 따라 리스트 등의 컬렉션을 오름차순, 내림차순 등으로 나열하는 것을 말한다.

 

2. 예시

예시를 들어보면 아래와 같은 문자열 리스트가 있는데 n번째 원소값을 기준으로 오름차순을 하고 싶은 경우가 있다

val list = arrayOf<String>("sun", "bed", "car")

// 0번째 원소 기준 정렬 결과
[bed, car, sun]

 

3. 코틀린에서의 정렬 함수

코틀린에서는 이러한 정렬을 쉽게 하기 위해 함수를 제공한다.

 

sort()

: sort() 함수는 원본 리스트 자체를 오름차순으로 정렬하는 함수이다.

 

sorted()

 : sorted() 함수는 원본 리스트는 냅두고 원본을 복사해서 복사된 리스트를 정렬해서 반환하는 함수이다.

 

sortedWith

 : 원본 리스트를 냅두고 정렬 기준을 여러개 적용한 리스트를 반환하는 함수이다.

 

 

4. sortedWith

 

아래의 코드는 list의 각 원소들의 2번째 원소를 기준으로 오름차순으로 정렬을 시키는 코드이다

 

1) compareBy  it[n] 으로 정렬을 하게 되면 리스트의 각 원소의 2번째 원소를 기준으로 정렬을 시켜서

 

[abce, abcd, cdx] 로 정렬이 되고

 

2) 이어서  {it} 에 의해서 전체 오름차순이 적용이 되서

 

최종 출력 [abcd, abce, cdx] 로 나오게 된다.

 

이와 같이 2개 이상의 조건으로 정렬이 필요할때는 sortedWith 를 사용하면 된다

val list = listOf("abce", "abcd", "cdx")

val n = 2

val resultList = list.sortedWith(
        compareBy ({ it[n] }, {it})
    )
    
// 출력
[abcd, abce, cdx]

 

 

'Kotlin Collection' 카테고리의 다른 글

[Kotlin] partition  (3) 2024.09.07
[Kotlin] joinToString  (0) 2024.09.06