Qual é a diferença entre Collection e List em Java?

153

Qual é a diferença entre Collectione Listem Java? Quando devo usar qual?

Truong Ha
fonte
interface pública Lista estende a coleção {}
rai.skumar 26/12/12

Respostas:

263

Primeiro: a Listé a Collection. É um especialista Collection, no entanto.

A Collectioné exatamente isso: uma coleção de itens. Você pode adicionar, remover, iterar e consultar a quantidade de itens existentes.

A Listadiciona informações sobre uma sequência definida de itens: Você pode obter o elemento na posição n , adicionar um elemento na posição n , remover o elemento na posição n .

Em um caso, Collectionvocê não pode fazer isso: "o quinto elemento desta coleção" não está definido, porque não há uma ordem definida.

Também existem outras coleções especializadas, por exemplo, uma Setque adiciona o recurso de nunca conter o mesmo elemento duas vezes.

Joachim Sauer
fonte
9
sim, list é uma especialização ordenada da coleção (mas não classificada) +1
atamanroman
2
Lista em Java estende a interface Colecções e constrói funções indexados que ajuda na posição baseados recuperação e remoção comportamento
frictionlesspulley
188

Collectioné a interface raiz da hierarquia java Collections. Listé uma sub-interface que define uma coleção ordenada, outras sub-interfaces são as Queueque normalmente armazenam elementos prontos para processamento (por exemplo, pilha ).

O diagrama a seguir demonstra o relacionamento entre os diferentes tipos de coleção java:

coleções java

Krock
fonte
1
Muito parecido com a sua imagem, eu a vi quando se preparava para o SCJP, mas quase esqueci tudo sobre essas coisas hoje em dia.
Truong Ha
1
Devo admitir que esta imagem foi roubada deste blog . Eu também vi um diagrama como este no livro da K&B SCJP .
krock
você pode aprender muito com o certificado SCJP, a maioria dos livros para este tópico são impressionantes :)
atamanroman
Eu acho que Mapnão é um Collection.
Giannis christofakis
7

API Java é o melhor para responder a isso

Coleção

A interface raiz na hierarquia de coleção. Uma coleção representa um grupo de objetos, conhecidos como seus elementos. Algumas coleções permitem elementos duplicados e outras não. Alguns são ordenados e outros não ordenados. O JDK não fornece implementações diretas dessa interface: fornece implementações de subinterfaces mais específicas, como Set e List. Essa interface é normalmente usada para distribuir coleções e manipulá-las onde a generalidade máxima é desejada.

Lista (estende a coleção)

Uma coleção ordenada (também conhecida como sequência). O usuário desta interface tem controle preciso sobre onde na lista cada elemento é inserido. O usuário pode acessar elementos por seu índice inteiro (posição na lista) e procurar elementos na lista.

Diferentemente dos conjuntos, as listas normalmente permitem elementos duplicados. Mais formalmente, as listas normalmente permitem pares de elementos e1 e e2, como e1.equals (e2), e geralmente permitem vários elementos nulos, se permitirem elementos nulos. Não é inconcebível que alguém queira implementar uma lista que proíba duplicatas, lançando exceções de tempo de execução quando o usuário tenta inseri-las, mas esperamos que esse uso seja raro.

Eugene Ryzhikov
fonte
3

List e Set são duas subclasses de Collection.

Na lista, os dados estão em ordem específica.

No conjunto, ele não pode conter os mesmos dados duas vezes.

Na coleção, ele apenas armazena dados sem uma ordem específica e pode conter dados duplicados.

Neeraj Bansal
fonte
2

Collection é uma interface de alto nível que descreve objetos Java que podem conter coleções de outros objetos. Não é muito específico sobre como eles são acessados, se várias cópias do mesmo objeto podem existir na mesma coleção ou se a ordem é importante. List é especificamente uma coleção ordenada de objetos. Se você colocar objetos em uma lista em uma ordem específica, eles permanecerão nessa ordem.

E decidir onde usar essas duas interfaces é muito menos importante do que decidir qual é a implementação concreta que você usa. Isso terá implicações para o desempenho de tempo e espaço do seu programa. Por exemplo, se você quiser uma lista, poderá usar um ArrayList ou um LinkedList, cada um dos quais terá implicações para o aplicativo. Para outros tipos de coleção (por exemplo, conjuntos), considerações semelhantes se aplicam.

Gian
fonte
2

Collection é a super interface da List, portanto, toda lista Java também é uma instância da coleção. As coleções são iteráveis ​​apenas sequencialmente (e em nenhuma ordem específica), enquanto uma Lista permite o acesso a um elemento em uma determinada posição por meio do get(int index)método

Daff
fonte
2

Collection é a interface principal da hierarquia Java Collections e List (Sequence) é uma das sub interfaces que define uma coleção ordenada.

Ramya
fonte