Estou tentando classificar uma lista de objetos por um valor específico dentro do objeto. Qual seria a melhor abordagem para fazer tal coisa. Devo usar Collections.sort () com algum tipo de comparador?
Estou tentando classificar uma lista de objetos por um valor flutuante que eles mantêm em uma das variáveis.
EDIT: Isto é o que eu tenho até agora:
public class CustomComparator implements Comparator<Marker> {
@Override
public int compare(Mark o1, Mark o2) {
return o1.getDistance().compareTo(o2.getDistance());
}
}
os estados de erro: Não é possível invocar compareTo (double) no tipo primitivo double.
É porque um comparador não pode retornar nada além de um certo tipo?
java
android
sorting
collections
comparator
James andresakis
fonte
fonte
Respostas:
Você deve usar Comparable em vez de um Comparator se uma classificação padrão for o que você está procurando.
Veja aqui, isso pode ser de alguma ajuda - Quando uma classe deve ser comparável e / ou comparadora?
Experimente isto -
fonte
Siga este código para classificar qualquer ArrayList
fonte
Eu acho que isso vai te ajudar melhor
fonte
Agora não há necessidade de boxe (ou seja, não há necessidade de criar
OBJECT
usando o novo valor de uso do operador em vez de compararTo de Collections.Sort ..)1) Para ordem crescente
1) Para ordem Deascendente
fonte
"Android-java" aqui não é diferente de "java normal", então sim
Collections.sort()
seria uma boa abordagem.fonte
Como usar:
fonte
Você pode comparar duas String usando isto.
E agora faça uma classe ContactData.
Aqui, a lista de contatos é:
fonte
Faça um
Comparator
que possa comparar seus objetos ou, se todos forem instâncias da mesma classe, você pode fazer com que essa classe implementeComparable
. Você pode então usar Collections.sort () para fazer a classificação real.fonte
compareTo()
método é onde você faz a comparação. Uma pequena pesquisa no Google deu vários exemplos detalhados de como usá-lo, aqui está um deles: javadeveloper.co.in/java-example/java-comparable-example.htmlPara Kotlin , você pode usar esta função
e basta chamá-lo em seu
activity
oufragment
porfonte
Eu tenho um listview que mostra as informações sobre todos os clientes que estou classificando o nome dos clientes usando esta classe de comparação personalizada. Eles estão tendo algumas letras extras além das letras em inglês que estou gerenciando com este setStrength (Collator.SECONDARY)
fonte
Classe modelo:
Agora defina os dados em ArrayList
Agora Classifique ArrayList
Resumo: Ele classificará seus dados de acordo com a data
fonte
É muito fácil para Kotlin!
listToBeSorted.sortBy { it.distance }
fonte