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