1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Objetos java

Discussão em 'Programação' iniciada por ser eu, 11 de Junho de 2008. (Respostas: 9; Visualizações: 1128)

  1. caros informaticos, adorovos tanto curto bue vosso trabalho

    tou agr com alta duvida pk sou um iniciante em java.:x2:
    eu tou fazendo um projeto na faculdade, meu cursinho é ciencias informaticas.

    minha duvida ser:

    1.tenho varias classes cada uma com seus construtores e objetos. (alunos, turmas e suas prefreferencias para suas turmas)

    2.quero criar uma classe (ranking) que importe seus objetos das classes anteriores. o meu problema é este, Como importo os obectos e como ordeno os alunos pelo seu numero? me deem um exemplo po favor.

    agredecido víu, Ser Eu.[​IMG]
     
  2. arkannis

    arkannis Power Member

    Os alunos passas por parametro no construtor da classe Ranking.

    Para ordenar pelo numero, depende de onde estão guardados os alunos: Mas em principio, o java já disponibiliza métodos para isso: tens a classe Arrays, ou a classe Collections, que disponibilizam métodos sort.
    De notar que tens que criar e fornecer um Comparator para a classe Aluno, de modo a que estes sejam ordenados segundo o seu numero.
    Não é um assunto propriamente trivial, portanto é natural que fiques um bocado baralhado, procura mais informaçoes na API do java ou nos tutoriais da Sun.
     
  3. TheMaster

    TheMaster Power Member

    Ou então podes criar uma lista com prioridade (PriorityQueue) como construtor Ranking. Depois, ao introduzires, cada aluno, ele vai ser colocado na posição correcta na lista.

    Tens que criar a tua PriorityQueue para poderes implementar os serviços que precisas, mas podes sempre espreitar qualquer coisa daqui:

    http://java.sun.com/j2se/1.5.0/docs/api/java/util/PriorityQueue.html


    Cumprimentos.
     
  4. arkannis

    arkannis Power Member

    Isso não funciona bem assim.
    Uma Priority Queue não tem os elementos por ordem. Uma Priority Queue funciona de modo a que sempre que mandas remover um elemento, esse removido vai ser sempre o menor existente na fila. (alias, tu numa priority queue nem sequer podes ir buscar elementos ao meio da fila pelo seu indice, so podes mesmo espreitar o que esta no topo)

    Não me parece uma volta muito boa, se ele quer ordenar, o melhor mesmo é usar o Arrays.sort() ou Collections.sort().
     
  5. Baderous

    Baderous Banido

    Faz isso com um TreeSet com os códigos dos alunos ou os nomes, passando-lhe um Comparator no construtor.
     
  6. MadOnion

    MadOnion Folding Member

    Por outras palavras a classe Aluno deve implementar o interface Comparable, e portanto definir o metodo compareTo que recebe um objecto, e ai comparas o this com esse objecto.
    A partir daí quando inseres os elementos(no caso TreeSet), eles vêm sempre ordenados(seja lá por que parametro).
     
  7. TheMaster

    TheMaster Power Member


    Ele disse que quer ordenar os alunos pelo numero, e os elementos são ordenados logo à entrada da PriorityQueue. Depois pode criar um serviço da PriorityQueue que imprima a lista dos alunos já ordenados. Ele não falou em ir buscar dados ao meio da lista, daí eu ter sugerido. ;)

    Mas a tua solução também me parece válida.


    Cumprimentos.
     
  8. obg a todos

    cumps
     
  9. PJTuga

    PJTuga Power Member

    para usares o Collection.sort, fazes um implements comparable na classe que tem os objectos que queres ordenar.. e obrigatoriamente tens de escrever o metodo public int compraTo(Object obj)

    e devolves 0, caso os 2 sejam iguais
    devolves 1 caso o 1 seja maior que o 2
    devolves -1 caso o 1 seja menor que o 2


    hmmm, se és de onde eu acho que és, consulta o exemplo vencimentos_comparable ou o vencimentos_comparavel


    hehe, o meu ja tem a colocação em 2 fases a funcionar :D
     
  10. MadOnion

    MadOnion Folding Member

    Um pouco do que eu já tinha referido acima.
    Quando devolve 1 quer dizer que o this é maior que o obj, e -1 no caso contrário.
     

Partilhar esta Página