Arvore Binária de Pesquisa - e ordenamento de Strings usando compareTo
4 respostas
VitorX
Olá, este é meu primeiro post, portanto sejam pacientes comigo.
Meu professor de ALPRO II pediu para que cadastremos alunos através de uma Interface Gráfica armazenando-os em uma árvore binária de pesquisa, e também para imprimirmos na interface a lista dos alunos ordenados por Matrícula( quanto maior a matrícula mais em cima deve ficar o aluno na lista).
Outro ponto do problema é que devo usar o método compareTo para fazer o ordenamento:
Minha dúvida é como faço para comparar as matrículas, percorrendo a arvore e ordena-las em ordem de maior para menor.
Se puderem postar o código agradeceria.
Para ajudar postarei também a interface TADABP para mostrar os métodos que tenho disponíveis para usar.
Ai vai amigo. Veja que coloquei uma inner class para nao precisar criar outro arquivo. Agora é so vc encaixar na sua estrutura ai da interface… peace of cake !!!
Abraco !
packagebr.com.testes;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Map;importjava.util.TreeMap;/** * Classe criada para testes com metodo compareTo * @author rodrigo.silva * */publicclassComparaMatriculas{publicstaticvoidmain(String[]args){/** * Exemplo 1: utilizando compareTo implicitamente */Map<Integer,String>arvore=newTreeMap<Integer,String>();arvore.put(1,"Maria");arvore.put(2,"Joao");arvore.put(8,"Pedro");arvore.put(7,"Carlos");arvore.put(4,"Rogerio");arvore.put(5,"Rodrigo");arvore.put(6,"Eduardo");arvore.put(3,"Fernanda");System.out.println("Alunos ordenados: \n");for(Map.Entry<Integer,String>aluno:arvore.entrySet()){System.out.println("Matricula: "+aluno.getKey()+" - Nome: "+aluno.getValue());}System.out.println("\n\n\n");/* * * Veja que a lista saiu ordenada. Motivo: a Classe Integer ja * implementa a Interface Comparable veja: public final class Integer * extends Number implements Comparable<Integer>. Como os numeros de 1 a 8 sao * Integers (..), ao inserir automaticamente a lista sai Ordenada. * *//* * Vamos agora utilizar o metodo compareTo explicitamente: */List<Aluno>alunos=newArrayList<Aluno>();Alunoaluno1=newAluno();aluno1.setMatricula(1);aluno1.setNome("Maria");Alunoaluno2=newAluno();aluno2.setMatricula(2);aluno2.setNome("Joao");Alunoaluno3=newAluno();aluno3.setMatricula(3);aluno3.setNome("Fernanda");Alunoaluno4=newAluno();aluno4.setMatricula(4);aluno4.setNome("Rogerio");Alunoaluno5=newAluno();aluno5.setMatricula(5);aluno5.setNome("Rodrigo");Alunoaluno6=newAluno();aluno6.setMatricula(6);aluno6.setNome("Eduardo");Alunoaluno7=newAluno();aluno7.setMatricula(7);aluno7.setNome("Carlos");Alunoaluno8=newAluno();aluno8.setMatricula(8);aluno8.setNome("Pedro");alunos.add(aluno1);alunos.add(aluno3);alunos.add(aluno5);alunos.add(aluno8);alunos.add(aluno7);alunos.add(aluno2);alunos.add(aluno4);alunos.add(aluno6);System.out.println("Alunos desordenados: \n");for(Alunoaluno:alunos){System.out.println("Matricula: "+aluno.getMatricula()+" - Nome: "+aluno.getNome());}/* * Veja que imprimiu na ordem em que foram inseridos. Agora vamos ordena-los e imprimir * novamente */System.out.println("\n\n\nAlunos ordenados - ohh yeahhh : \n");Collections.sort(alunos);for(Alunoaluno:alunos){System.out.println("Matricula: "+aluno.getMatricula()+" - Nome: "+aluno.getNome());}}}classAlunoimplementsComparable<Aluno>{privateIntegermatricula;privateStringnome;/** * Comparacao em ordem decrescente de matricula 2.compareTo(1) */publicintcompareTo(Alunoa){returna.getMatricula().compareTo(getMatricula());}publicIntegergetMatricula(){returnmatricula;}publicvoidsetMatricula(Integermatricula){this.matricula=matricula;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}}
ViniGodoy
Muldon, você esqueceu das tags code! Pode corrigir ali em cima?