Ae galera desculpe o encomodo mais sou novo com programação java e gostaria de saber qual q diferença entre filas pilhas e listas parecem ser tao parecidos nao sei exatamente quando uso um ou o outro…
alguem poderia postar alguns ex. de um e de outro e me explicar o q se trata por favor…
[quote=“jedantas”]Ae galera desculpe o encomodo mais sou novo com programação java e gostaria de saber qual q diferença entre filas pilhas e listas parecem ser tao parecidos nao sei exatamente quando uso um ou o outro…
alguem poderia postar alguns ex. de um e de outro e me explicar o q se trata por favor…[/quote]
List = conjunto de objetos que são acessiveis pela sua posição na lista (ver java.utils.List)
Fila = conjunto de objetos cuja ordem de inserção/remoção de objetos obedece a uma lógica (por exemplo uma fila de mensagens a serem entregues) Normalmente usada como um buffer de “comandos” a serem processados depois (ver java.utils.Queue)
Pilha = conjunto de objetos cuja ordem de inserção/remoção simula o empilhamento desses objetos. Pilhas são Filas em que apenas o objeto “no topo da pilha” pode ser removido e qualquer objeto adicionado vai para o topo da pilha. Também conhecido como File FILO (First In Last Out)
A lógica pode ser inversa, sendo o ultimo elemento a poder ser removido , caso em que será um LIFO (Last in First Out). (ver java.util.Stack)
As implementações destes conceitos estão disponíveis em java, e normalmente usando a mesma classe, é o uso da classe vai determinar que papel ela está fazendo, se lista, se fila ou pilha.
LinkedList pode ser usada em qualquer destas funções, mas para a função de lista pura ArrayList é melhor. Para a funcionalidade de File (Queue) é normalmente necessário sincronismo de threds e portanto outra implementação de Queue pode ser mais apropriada). Uma pilha é um uso especial de uma fila, portanto vale o conceito anterior. Pode ser usada a class Stack, mas ela extende Vector e não Queue, não estando portanto no padrão aconcelhavel para usar encapsulamento. Nesse caso pode ser usado LinkedList sem problema.
Olá amigo, existem alguns tipos de Lista que lhe proporciona diferentes tipo de acesso.
Ex: Existe Lista, Dupla ou Simplismente encadeada, Circular. A Duplamente os ponteiros dos nodos apontam um para o outro proporcionando um acesso mais rapido as informações, onde vc pode ir para frente ou para traz, a Circular já da para vc ter uma noção, é como se não existisse inicio ou fim.
[quote=“jedantas”]pow vlw mesmo…
bom so uma coisa q eu nao entendi… pq tem mais de um tipow de lista e como seria a lista encadeada…
tipow se tivesse q montar uma lista encadeada para armazenar dados reais…
como eu devo fazer?[/quote]
Você pode implementar suas proprias listas, mas a menos que vc saiba muito bem o que está fazendo, é melhor as implementações já existentes. O java vem com um monte globalmente chamdadas de Java Collections Framework. Mas existem outras implementações especiais como a Common Collections.
LinkedList implementa uma lista duplamente encadeada.
Se vc for implementar suas listas, tente fazê-las implementar as interfaces padrão do java. Isso vai aumentar a sua compatibildiade e utilidade.
[quote=“jedantas”]pow vlw mesmo…
bom so uma coisa q eu nao entendi… pq tem mais de um tipow de lista e como seria a lista encadeada…
tipow se tivesse q montar uma lista encadeada para armazenar dados reais…
como eu devo fazer?[/quote]
So para complementar… lista encadeadas, fazem uma certa referencia a ponteiro… e isso não existe no java… quer dizer… voce nao tem ponteiros como no C, C++ ou até mesmo pascal(sim). No java você tem Objetos que armazenam a referencia para um outro objeto…
Outra curiosidade é que você não precisa se preocupar com isso… afinal, existem classes (como a Vector) que aramazena qualquer tipo de Objeto e que pode ser incrementado dinamicamente em tempo de execução… diferente do C que teria que o usar a funcao MALLOC (eu acho) e atribuir um ponteiro… e enfim… O java te facilita MUITO isso…
Entao te recomendo o seguinte,… tirando a possibilidade de você querer aprender isso para fins academicos, nao precisa se preocupar… estuda como você trabalha com classes como Vector, ArrayList, Collection, Iterator… … etc… etc… abraços!