View Full Version : Objetos java


ser eu
11-06-2008, 11:56
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.http://www.techzonept.com/images/icons/icon7.gif

arkannis
11-06-2008, 12:40
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.http://www.techzonept.com/images/icons/icon7.gif

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.

TheMaster
11-06-2008, 14:45
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.

arkannis
11-06-2008, 14:51
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.

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().

Baderous
11-06-2008, 15:06
Faz isso com um TreeSet com os códigos dos alunos ou os nomes, passando-lhe um Comparator no construtor.

MadOnion
11-06-2008, 15:26
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).

TheMaster
11-06-2008, 18:52
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().


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.

ser eu
11-06-2008, 23:45
obg a todos

cumps

PJTuga
13-06-2008, 00:29
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

MadOnion
13-06-2008, 11:04
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


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.