[RESOLVIDO] Como ordenar um array usando o compareTO

Oi gente, eu tenho uma tarefa de programação para fazer, porem eu to quebrando muito a cabeça com a parte parte de array, no exercício eu preciso fazer uma classe Chamada Pessoa, que vão ter nome e idade, então eu preciso fazer um array de 3 pessoas e ordena-los em ordem alfabética utilizando o compareTO, porem eu não consigo declarar meu Array dentro do meu método, alguém pode me ajudar por favor, to sofrendo demais.

Posta o código que você fez, ou tentou fazer até agora.

Após colar, selecione todo ó código e clique nesse botão para formatá-lo:

image

package stringordenado;

import java.util.Scanner;
   
    public class Pessoa{ 

  private String nome; 
  private int idade;  

  
  public Pessoa(String nome, int idade){
    this.nome = nome;
    this.idade = idade;
  }

  public Pessoa(){

  }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }
  
    Scanner n = new Scanner(System.in);
    
  public void comparararray(){
      
      Pessoa[] p = new Pessoa[3];
      
      
          
      }
      
      
  }

Primeiro você cria seu próprio Comparator:

public class PessoaComparator
        implements Comparator<Pessoa> {
    @Override
    public int compare(Pessoa o1, Pessoa o2) {
        return o1.getNome().compareTo(o2.getNome());
    }
}

Depois passa usa o método sort da classe Arrays, o primeiro argumento é o array de pessoas, o segundo o comparator.

public class OrdernarArray {
    public static void main(String[] args) {
        Pessoa[] pessoas = {
                new Pessoa("Silvano", 16),
                new Pessoa("Ademir", 21),
                new Pessoa("Gustavo", 17)
        };

        Arrays.sort(pessoas, new PessoaComparator());

        System.out.println(Arrays.toString(pessoas));
        // [Pessoa{nome='Ademir', idade=21}, Pessoa{nome='Gustavo', idade=17}, Pessoa{nome='Silvano', idade=16}]
    }
}

Eu consigo apresentar esses valores usando um toString() tambem?

Sim

Eu tentei fazer o seu codigo, e executou o programa, porem so esta mostrando o endereco na memoria, o que eu tenho que fazer para arrumar isso?

Vai na sua classe Pessoa e sobrescreve o método toString().

public class Pessoa() {
... 

    @Override
    public String toString() {
        return "Pessoa{nome=" + this.nome +
               ", idade=" + this.idade + "}";
    }
}

Foiiiii, cara muito obrigado mesmo, gostei muito desse fórum, obrigado por me ensinar esse código novo.

Abração.