Progama

Pessoal como faco para criar um metodo para listar o CPF cadastrado ja Ordenado? Estou puxando da minha classe lista encadeada nao ordenada ao inserir mais umas das opcoes é lista por cpf ordenado.

veja minhas classes

        public class MenuAluno {

Scanner ler = new Scanner(System.in);
ListaDupEncNaoOrd<AlunoooP> Aluno = new ListaDupEncNaoOrd<>();

public void Inserir() {
    AlunoooP a = new AlunoooP();
    System.out.print("cpf:");
    a.setCpf(ler.nextInt());
    System.out.print("Nome:");
    a.setNome(ler.next());
    System.out.print("DataNascimento:");
    a.setDatanasc(ler.next());
    System.out.print("Cidade Origem:");
    a.setCidadeOrigem(ler.next());
    System.out.print("Estado Origem:");
    a.setEstadoOrigem(ler.next());

    boolean existe = this.buscarCpf(a.getCpf());
    if (existe) {
        System.out.println("O Codigo que voce quer inserir já existe, tente Outro");
    } else {
        Aluno.add(a);
    }
}

public void editarAluno(int cpf) {
    AlunoooP j2 = this.buscarCod1(cpf);
    if (j2 != null) {
        System.out.print("Nome:");
        j2.setNome(ler.next());
        System.out.print("DataNascimento:");
        j2.setDatanasc(ler.next());
        System.out.print("Cidade Origem:");
        j2.setCidadeOrigem(ler.next());
        System.out.print("Estado Origem:");
        j2.setEstadoOrigem(ler.next());
    } else {
        System.out.println("Cpf não encontrado");
    }
}

public boolean buscarCpf(int cpf) {
    boolean achou = false;

    NoDupEnc<AlunoooP> aux = Aluno.getNoCabeca().getProx();

    AlunoooP j2 = (AlunoooP) aux.getObj();

    while (achou == false || j2 != null) {
        if (j2 != null) {
            if (j2.getCpf() == cpf) {
                achou = true;
                System.out.println(j2.getNome());
                return true;
            } else {
                aux = aux.getProx();
                j2 = (AlunoooP) aux.getObj();
            }

        } else {
            achou = true;
        }
    }
    return false;
}

public AlunoooP buscarCod1(int cod) {
    boolean achou = false;
    NoDupEnc<AlunoooP> aux = Aluno.getNoCabeca().getProx();
    AlunoooP j2 = (AlunoooP) aux.getObj();

    while (achou == false || j2 != null) {
        if (j2 != null) {
            if (j2.getCpf() == cod) {
                achou = true;
                System.out.println(j2.getNome());

                return j2;
            } else {
                aux = aux.getProx();
                j2 = (AlunoooP) aux.getObj();
            }
        } else {
            achou = true;
        }
    }
    return null;
}

public void layout() {
    System.out.println("----------------------------------------------------------------------------------------");
    System.out.println("Cpf         Nome          Data Nascimento        Cidade          Estado         ");
    System.out.println("-----------------------------------------------------------------------------------------");
}


public void removerAluno(int cpf) {
    AlunoooP aux = buscarCod1(cpf);
    if (aux != null) {
        Aluno.remove(aux);
    } else {
        System.out.println("Cpf não cadastrado!");
    }
}

}

Se eu entendi direito a sua pergunta, penso que voce pode tentar o seguinte caminho :

1.Cria uma ArrayList, carrega ela com as referencias dos seus nós.

2.Classifica o ArrayList , usando as referencias dos nós

3.Lista a ArrayList exibindo as referencias dos nós

Caso não seja isso que você quer fazer, detalha melhor pra ver se posso te ajudar nessa questão.

blz amigo
é isso msm

vou tentar aki

amigo é o seguinte ja tenho esse listar aqui abaixo so pq ele lista nao ordenado, como faco para ordenar ele? segue ai esse medodo desse jeito ai ele imprime desordenado…`

 public void listarPorCpf() {
    boolean fim = false;
    NoDupEnc<AlunoooP> aux = Aluno.getNoCabeca().getProx();
    AlunoooP j2 = (AlunoooP) aux.getObj();

    this.layout();
    while (fim == false || j2 != null) {
        if (j2 != null) {
            System.out.println(j2.getCpf() + "            " + j2.getNome() + "            " + j2.getDatanasc() + "             " + j2.getCidadeOrigem() + "            " + j2.getEstadoOrigem());
            aux = aux.getProx();
            j2 = (AlunoooP) aux.getObj();
        } else {

            fim = true;
        }

    }
}

Fica melhor em uma lista encadeada você ter uma Classe que chama a proxima e anterior.

class AlunoooP {
    String nome = "";
    String cpf = "";
    AlunoooP anterior=null;
    AlunoooP proximo=null;
   
 
   public String geNome() {
       return nome;
   }

   public void getCPF() {
      return cpf;
   }

   public AlunoooP getProx() {
       return proximo;
   }
   ...
}


AlunoooP atual_no = … // obtem o primeiro ou desejado

1.cria e carrega a arrayList

ArrayList<AlunoooP> alist = new ArrayList();

while ( atual_no != null )  {
      alist.add(atual_no);
      atual_no = atual_no.getProx();
} 

2.classifica a arrayList

alist.sort( new Comparator<AlunoooP>() {
                    
                    @Override 
                    public int compare( AlunoooP c, AlunoooP c2) {
                        
// compara com o que voce quiser 
                        int ret = c.getCPF().compareTo(c2.getCPF() );
                                
                        return ret; 
                    }
        });
  1. lista a ArrayList

for( AlunoooP atual_no : alist ) {
String str = atual_no.getCPF() + " // " + atual_no.getNome();
System.out.println(str);
}