Tenho um objeto chamado listaFornecedores que tem um campo String o qual eu gostaria de classificar em ordem alfabética. Tem algum método que faz essa classificação? Como é a sintaxe? Observação: eu quero que a lista inteira fique em ordem alfabética.
Atenciosamente,
Ronaldo
Tem um problema o objeto listaFornecedores é um model da classe Fornecedores. Então ele tem vários “campos”.
O acesso ao campo é feito pelo getNome_razao(), este é o campo pelo qual quero ordenar o ArrayList listaFornecedores.
Como fica o código usando collections.sort(listaFornecedores.getNome_razao())? Não sei nem se isto existe. Será que eu tenho que fazer um trabalho mais braçal?
Atenciosamente,
Ronaldo
Vc acessou o link que passei, leu a mensagem do post owner, viu a solução e tudo o que eu escrevi?
2 curtidas
Então Fornecedores
é uma classe e listaFornecedores
é um ArrayList<Fornecedores>
?
Se for isto mesmo, uma das formas de serguir o que o Staroski sugeriu, com Comparator, seria assim:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
class Main {
public static void main(String... args) {
// Criei esta classe deste jeito simples apenas para teste.
class Fornecedores {
private String nome_razao;
Fornecedores(String nome_razao) {
this.nome_razao = nome_razao;
}
String getNome_razao() {
return this.nome_razao;
}
@Override
public String toString() {
return this.nome_razao;
}
}
// Aqui começa o exemplo que importa:
List<Fornecedores> listaFornecedores = new ArrayList<>();
listaFornecedores.add(new Fornecedores("bbb"));
listaFornecedores.add(new Fornecedores("ccc"));
listaFornecedores.add(new Fornecedores("aaa"));
listaFornecedores.sort(Comparator.comparing(Fornecedores::getNome_razao));
System.out.println(listaFornecedores);
}
}
E se for implementar Comparable, como sugeriu o Buzatto, poderia ser algo assim:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Main {
public static void main(String... args) {
class Fornecedores implements Comparable<Fornecedores> {
private String nome_razao;
Fornecedores(String nome_razao) {
this.nome_razao = nome_razao;
}
@Override
public int compareTo(Fornecedores other) {
return this.nome_razao.compareTo(other.nome_razao);
}
@Override
public String toString() {
return this.nome_razao;
}
}
List<Fornecedores> listaFornecedores = new ArrayList<>();
listaFornecedores.add(new Fornecedores("bbb"));
listaFornecedores.add(new Fornecedores("ccc"));
listaFornecedores.add(new Fornecedores("aaa"));
Collections.sort(listaFornecedores);
System.out.println(listaFornecedores);
}
}
Eu acredito que com o Comparator é melhor, principalmente porque vc ainda está entendendo este negócio de “ordem natural” e pode ser que conforme vc entender melhor, vc mude o seu conceito do que é a ordem natural dos seus fornecedores.
Se sua situação for diferente do que esta que eu entendi, mostra o código de Fornecedores
e a parte onde vc declara listaFornecedores
.
1 curtida
Mas é por isso que você precisa passar um objeto do tipo Comparator
para o método sort
da sua lista, esse Comparator
deve utilizar o campo que você quiser para fazer a ordenação.
1 curtida
Entendi, usei sua linha de código Wellington Domiciano e funcionou no meu programa…
Muito obrigado!!!
Atenciosamente,
Ronaldo
1 curtida