Olá, Adriana
O código que você encontrou utilizando o Collator e sortedWith é uma ótima opção para resolver esse problema.
No entanto, se você está lidando com nomes que podem ter várias nacionalidades e acentos, talvez seja interessante considerar o uso da biblioteca ICU4J. Essa biblioteca oferece suporte para ordenação de strings com base em regras específicas de idiomas, incluindo acentuações.
Para utilizar a biblioteca ICU4J, você precisará adicioná-la como dependência no seu projeto. Em seguida, você pode utilizar a classe RuleBasedCollator para criar um objeto Collator personalizado com as regras de ordenação desejadas. Por exemplo:
import com.ibm.icu.text.Collator
import com.ibm.icu.text.RuleBasedCollator
import java.text.ParseException
fun main() {
try {
val rules = "< a < á < b < c < d < e < é < f < g < h < i < í < j < k < l < m < n < o < ó < p < q < r < s < t < u < ú < v < w < x < y < z"
val collator = RuleBasedCollator(rules)
val nomes = listOf("José", "João", "Álvaro", "Érica")
val nomesOrdenados = nomes.sortedWith(collator)
nomesOrdenados.forEach { println(it) }
} catch (e: ParseException) {
e.printStackTrace()
}
}
Nesse exemplo, estamos criando um Collator personalizado com as regras de ordenação em português, considerando as acentuações. Em seguida, utilizamos o método sortedWith para ordenar a lista de nomes de acordo com o Collator criado.
Espero ter ajudado e bons estudos!