다중조건으로 정렬해야 할 때 sotredWith() 안에 compareBy() 또는 compareBy{}.thenBy{}를 파라미터로 넘겨준다. compareByDescending{} 또는 .thenByDescending{}도 있다.

아래는 코드 예시

data class Person(val age: Int, val name: String, val address: String)

fun main() {
    val list = listOf<Person>(
		Person(10, "Bob", "Berlin"),
		Person(10, "David", "Berlin"),
		Person(10, "Alice", "Paris"),
		Person(10, "Charles", "Paris")
	)
    
    //1. 주소로 먼저 정렬 후 이름 역순으로 정렬
    val sortedList = list.sortedWith(
        compareBy<Person>{
            it.address
        }.thenByDescending {
            it.name
        }
    )
    
    println(sortedList)
    /* 출력결과
    [Person(age=10, name=David, address=Berlin),
    Person(age=10, name=Bob, address=Berlin), 
    Person(age=10, name=Charles, address=Paris), 
    Person(age=10, name=Alice, address=Paris)] */
    
    
    
    //2. 주소로 먼저 정렬 후 이름 순으로 정렬
    val sortedList2 = list.sortedWith(
        compareBy(        
            {it.address},{it.name}
        )
    )
    println(sortedList2)
    /*출력결과
    [Person(age=10, name=Bob, address=Berlin), 
    Person(age=10, name=David, address=Berlin), 
    Person(age=10, name=Alice, address=Paris), 
    Person(age=10, name=Charles, address=Paris)]
    */
}