E ai galera.
Tô tendo que fazer um trabalho, que é um dos itens é o seguinte:
Tenho que incluir numa Lista , nodos , que tem como parametro o nome da pessoa e o telefone.
Só que tem que ser ordenado por ordem alfabetica (nome da pessoa)… ou seja, tenho que incluir na lista, mas já incluir o nodo no lugar certo… como que eu faço isso ?
Alguem pode me ajudar ?
Obrigado !
Você precisa de um método de ordenação em tempo de inserção.
Sempre ao inserir uma pessoa na lista já a deixe ordenada, e depois da inserção reordene a lista. Dependendo da classe que você está trabalhando (ArrayList, Vector, etc), este método já está implementado.
Estou apenas dando um palpite, não conheço muito a parte de Estrutura de Dados em Java mas eu começaria procurando sobre métodos de ordenação em cada classe que pode implementar uma lista ok?
Flwz
Certo.
Mas tipo assim…
estou trabalhando com listas, não é Vector, nem Arraylist e tal…
é Lista duplamente encadeada mesmo.
que tem os campos “proximo”, “anterior”… etc.
Como que eu faço pra ordenar logo que eu vou inserir.
tem algo que “testa” e insere no lugar certo ?
Obrigado
entendo
Neste caso vc deve implementar um método que ordene sua lista.
Procure pesquisar a respeito de ordenação (algoritmos de ordenação http://pt.wikipedia.org/wiki/Algoritmo_de_ordena%C3%A7%C3%A3o).
Não vou dizer qual o mais adequado deles pois a ordenação envolve conhecimento prévio do tamanho da sua lista, tamanho do registro (neste caso, objetos) a serem deslocados, e outras coisas.
Mas caso tenha algum problema fiz um trabalho semelhante e posso te ajudar de alguma outra forma
Até mais
Opa.
tipo… eu tava vendo…
tem a interface comparable, que segundo o q eu entendi, funciona pra comparar objetos e tal…
alguem sabe como funciona mais ou menos ?
é que eu tou meio perdido :(…
obrigado!
Pelo que entendi vc vai implementar sua lista na mão ok?
Que tipo de objeto ela vai armazenar?
Vamos supor que sejam objetos da classe Pessoa.
Então vc vai ter
[code]
public class Pessoa implements Comparable< Pessoa > {
// outros membros de Pessoa…
public int compareTo(Pessoa p) {
// olhe na documentação os requisitos para a implementação do método compareTo
}
}[/code]
Feito isso, na implementação de sua lista, sempre quanto vc for inserir um item, vc tem que percorrer a lista inteira, desde a primeira posição, até encontrar o local adequado para o novo obvjeto ser inserido, usando assim o método compareTo
if ( objetoASerInserido.compareTo(objetoAtualNaLista) for igual a alguma coisa) {
//insere em algum lugar
}
Deu para entender?
Falow!
Outra coisa, para implementar a busca na lista vc pode implementar um método binarySearch para que a busca seja mais rápida (mas vc tem que ter o método compareTo para saber para onde o binarySearch deve caminhar.
Lembrando que já existe tudo isso no Java, mas como vc tem que implementar na mão vc vai precisar fornecer essas funcionalidades.
Vc já deve ter aprendido o binarySearch na disciplina (busca binária).
Falow!
A, mais uma coisa, vc vai precisar indexar sua lista se for usar a busca binária.
O compareTo vc pode também criar sua própria regra de retorno, creio que omais usual seja retornar -1 se um objeto for “menor” que o outro, 0 se for igual e 1 se for maior. Ai dentro do método vc decide quais campos de Pessoa que devem dizer se a pessoa é maior, menor ou igual. Lembrando que se vc for usar o nome como essa chave de comparação, a classe String já possui o método compareTo implementado.
Falow!
Oi, jah pensou em usar o HashMap?
O Hash Map eh, na minha opnião, a melhor técnica pra rcuperar informações. é formado por <chave, valor> e faz tipo um mapa das tuas informações.
http://java.sun.com/j2se/1.4.2/docs/api/ descrição pela API
http://www.roseindia.net/javatutorials/javahashmap.shtml tutorial sobre o HashMap