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.
Uma coleção que não contém elementos duplicados. Mais formalmente, os conjuntos não contêm par de elementos e1 e e2, de modo que e1.equals (e2) e, no máximo, um elemento nulo. Como está implícito no nome, essa interface modela a abstração do conjunto matemático.
Para um SortedSet, não há dois elementos em que compareTo () == 0, pois igual não é chamado.
27540 Peter Lawrey
34
Um conjunto pode ser encomendado, então a primeira declaração desta resposta é enganosa, mesmo que, naturalmente, uma lista deve ser escolhido para fazer cumprir a ordem Coleção
Samuel Eustachi
24
ERRADO! Um conjunto Java pode ser encomendado, dependendo da implementação; por exemplo, um Java TreeSet é solicitado. No contexto de Java, a única diferença entre uma Lista e um Conjunto é que o Conjunto contém itens exclusivos. No contexto da matemática, os itens de um conjunto são únicos e não ordenados.
stackoverflowuser2010
44
Sim, um conjunto Java PODE ser, mas NÃO é NECESSARIAMENTE solicitado. Sim, se você tiver um TreeSet, pode contar com a encomenda. Mas você deve SABER que possui um TreeSet e não apenas um conjunto. Se você receber um conjunto, não poderá depender do pedido. Uma lista, por outro lado, é ordenada por sua própria natureza e qualquer implementação da lista deve ser ordenada. Portanto, nos termos da definição da interface, não é particularmente errado dizer que um conjunto é desordenado, mas talvez seja um pouco mais tecnicamente correto dizer que um conjunto não oferece garantia de ordem dos elementos.
Spanky Quigman
14
Não confunda "pedido" com "classificado". Da mesma forma, não confunda o contrato de uma interface e as implementações da interface. Também é errado dizer que algo "não ordenado" não tem ordem, significa simplesmente que não há garantias sobre a implementação da ordem (e que a ordem pode não ser estável entre as chamadas, ao contrário de uma lista ordenada).
lilbyrdie
223
╔═══════════════════╦══════════════════════╦═════════════════════════════╗║║List║Set║╠═══════════════════╬══════════════════════╬═════════════════════════════╣║Duplicates║ YES ║ NO ║╠═══════════════════╬══════════════════════╬═════════════════════════════╣║Order║ ORDERED ║ DEPENDS ON IMPLEMENTATION ║╠═══════════════════╬══════════════════════╬═════════════════════════════╣║PositionalAccess║ YES ║ NO ║╚═══════════════════╩══════════════════════╩═════════════════════════════╝
Uma coisa a nota: o desempenho de acesso posicional depende muito da implementação subjacente, array vs lista ligada stackoverflow.com/questions/322715/...
Christophe Roussy
1
Como os conjuntos são indexados, se não por acesso posicional? (+1 para a tabela ASCII)
tplive 13/09/18
72
Listas ordenadas de elemento (exclusivo ou não) Conformidade com a interface do Java denominadaList
Pode ser acessado por índice
implemetented usando
LinkedList
ArrayList
Listas de elementos exclusivos: Estar em conformidade com a interface do Java chamadoSet
pode não ser acessado pelo índice
implemetented usando
HashSet (não ordenado)
LinkedHashSet (pedido)
TreeSet (classificado por ordem natural ou pelo comparador fornecido)
Ambas as interfaces Sete Listestão em conformidade com a interface do Java denominadaCollection
Corrigir. LinkedHashSet contém elementos na ordem de inserção.
precisa saber é o seguinte
É uma interface, TUDO depende da implementação. List.get () pode criar um arquivo contendo as 5 primeiras casas decimais de pi e lançar uma StackOverFlowException em algumas implementações, isso não implica que você possa dizer "Uma lista é algo que pode criar arquivos", pois isso não faz parte do contrato definido pela interface. Os documentos afirmam que Set é modelado com base no conceito matemático de um conjunto, que por definição não é ordenado. Dado um conjunto no seu código, você não pode assumir que ele é ordenado sem violar os princípios do SOLID.
Sara
@kai, eu costumo continuar LinkedHashSetdo lado esquerdo se o código depender da ordem mais tarde. Eu só uso Setse realmente usá-lo como um, pois você não pode assumir que a implementação subjacente é uma coisa LinkedHashSetou outra , pode ser hoje, mas amanhã o código será alterado e falhará.
Christophe Roussy
Se você declarar um LinkedHashSet, não está lidando com um conjunto, portanto, fazer declarações sobre como os conjuntos devem se comportar é pouco relevante. Eu diria que atribuir ordem (possível) a conjuntos com base em algumas implementações é semelhante a dizer "Instâncias de Runnable têm um método run que deve ser executado em algum encadeamento. Também abrem uma conexão com o banco de dados e leem os dados do cliente, dependendo da implementação. " É claro que algumas implementações podem fazer isso, mas não é isso que está implícito na Interface Runnable.
Sara
5
Pode não ser a resposta que você está procurando, mas o JavaDoc das classes de coleções é realmente bastante descritivo. Copiar / colado:
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.
Um conjunto é um grupo não ordenado de objetos distintos - nenhum objeto duplicado é permitido. Geralmente é implementado usando o código de hash dos objetos que estão sendo inseridos. (Implementações específicas podem adicionar pedidos, mas a própria interface Set não.)
Uma lista é um grupo ordenado de objetos que podem conter duplicatas. Pode ser implementado com um ArrayList, LinkedList, etc.
Estou confuso 😕! O que significa ordenado / não ordenado neste contexto? Está relacionado à ordem crescente e decrescente? Em caso afirmativo, Listnão está ordenado mal
malhobayyeb 11/01
4
Ordenado é quando os dados de entrada são organizados exatamente como inseridos pelo usuário, enquanto Ordenado é quando os dados de entrada são classificados lexicograficamente ou em ordem crescente / decrescente (em termos de valores inteiros). Não ordenado significa que os dados de entrada podem ou não ser armazenados na ordem de entrada do usuário.
Akhil
5
Lista:
Lista permite elementos duplicados e valores nulos. Fácil de pesquisar usando o índice correspondente dos elementos e também exibirá elementos em ordem de inserção. Exemplo: (lista vinculada)
Set:
Set não permite nenhum elemento duplicado e permite um valor nulo único. Não manterá nenhuma ordem para exibir elementos. Somente TreeSetserá exibido em ordem crescente.
Exemplo: (TreeSet)
import java.util.TreeSet;publicclassSetExample{publicstaticvoid main(String[] args){// TODO Auto-generated method stubTreeSet<String> set =newTreeSet<String>();try{
set.add("hello");
set.add("world");
set.add("welcome");
set.add("all");for(String num : set){System.out.println( num);}
set.add(null);}catch(NullPointerException e){System.out.println(e);System.out.println("Set doesn't allow null value and duplicate value");}}}
Resultado:
all
hello
welcome
world
java.lang.NullPointerException Set não permite valor nulo e valor duplicado
1.List permite valores duplicados e o conjunto não permite duplicados
2.List mantém a ordem em que você inseriu elementos na lista O conjunto não mantém a ordem. 3.List é uma sequência ordenada de elementos, enquanto Set é uma lista distinta de elementos que não é ordenada.
1) O conjunto não permite duplicatas. Lista permite duplicar. Com base na implementação do conjunto, também mantém a ordem de inserção.
por exemplo: LinkedHashSet. Mantém a ordem de inserção.Por favor, consulte aqui
2) contém o método Por natureza do Conjunto, ele oferece melhor desempenho para acessar. O melhor caso é o (1). Mas a Lista tem um problema de desempenho para chamar contains.
Todas as Listclasses mantêm a ordem de inserção. Eles usam implementações diferentes com base no desempenho e outras características (por exemplo, ArrayListpara velocidade de acesso a um índice específico, LinkedListsimplesmente para manter a ordem). Como não há chave, duplicatas são permitidas.
As Setclasses não mantêm a ordem de inserção. Opcionalmente, eles podem impor uma ordem específica (como em SortedSet), mas geralmente têm uma ordem definida por implementação com base em alguma função de hash (como em HashSet). Como Sets são acessados por chave, duplicatas não são permitidas.
Os mapas armazenam objetos por chave, mas define os objetos de armazenamento usando um valor exclusivo relacionado ao objeto, geralmente seu código de hash. (Maps também pode usar códigos de hash para verificar se há singularidade chave, mas eles não são obrigados a.)
Quinn Taylor
1
Ordenando ... uma lista tem um pedido, um conjunto não.
O Set ADT não especifica a ordem, mas algumas implementações do Set (como o LinkedHashSet) mantêm a ordem de inserção.
Michael Myers
3
No entanto, a diferença mais importante é que os conjuntos não permitem duplicatas. Um saco / multiset faz.
Quinn Taylor
Um TreeSet tem pedidos.
stackoverflowuser2010
1
Poucas diferenças dignas de nota entre Lista e Conjunto em Java são fornecidas da seguinte maneira:
1) A diferença fundamental entre List e Set em Java está permitindo elementos duplicados. A lista em Java permite duplicados, enquanto o Set não permite duplicados. Se você inserir duplicado em Definir, substituirá o valor mais antigo. Qualquer implementação do conjunto em Java conterá apenas elementos exclusivos.
2) Outra diferença significativa entre List e Set em Java é a ordem. Lista é uma coleção ordenada, enquanto Set é uma coleção não ordenada. A lista mantém a ordem de inserção dos elementos, significa que qualquer elemento que foi inserido antes terá um índice mais baixo do que qualquer elemento que foi inserido depois. Definido em Java não mantém nenhuma ordem. Embora o Set forneça outra alternativa chamada SortedSet, que pode armazenar elementos Set em uma ordem de classificação específica definida pelos métodos Comparable e Comparator dos Objetos armazenados no Set.
3) A implementação popular da interface List em Java inclui ArrayList, Vector e LinkedList. Enquanto a implementação popular da interface Set inclui HashSet, TreeSet e LinkedHashSet.
É bastante claro que, se você precisar manter um pedido ou objeto de inserção e sua coleção puder conter duplicatas, a Lista é um caminho a percorrer. Por outro lado, se o seu requisito é manter uma coleção exclusiva sem duplicatas, o conjunto é o caminho a seguir.
Set<E>e List<E>são utilizados tanto para armazenar elementos do tipo E. A diferença é que Seté armazenada de maneira desordenada e não permite valores duplicados. Listé usado para armazenar elementos de maneira ordenada e permite valores duplicados.
Setelementos não podem ser acessados por uma posição de índice e Listelementos podem ser acessados com uma posição de índice.
@ BalusC, por favor, não comente sem ver a data da postagem. Veja o post digno naquele momento.
Yash
0
Oi Tantas respostas já são dadas ... Deixe-me apontar alguns pontos que não são mencionados até agora:
A maioria das implementações da lista (ArrayList, Vector) implementaRandomAccess interface, que é uma interface de marcador para acesso mais rápido. Nenhuma das implementações do conjunto faz isso.
Lista usa um iterador especial chamado ListIteratorque suporta a iteração nas duas direções . O conjunto usa o Iterator que suporta apenas iteração de 1 via
O HashSet ocupa 5,5 vezes mais memória que o ArrayList para armazenar o mesmo número de elementos.
@smurti, é um pouco tarde, e não tenho certeza se você notou, mas seu primeiro ponto se contradiz: "A maioria das implementações da lista (ArrayList, Vector) implementa RandomAccess ..." e "... Nenhuma da lista implementações fazem isso "
Peter M
0
O maior diferente é o conceito básico.
Na interface Set and List . Conjunto é o conceito de matemática. Método Set estende collection.however não adicionar novo método. size () significa cardinalidade (mais é BitSet.cardinality, contador linear , Log Log , HyperLogLog ). addAll () significa união. retainAll () significa interseção. removeAll () significa diferença.
No entanto, liste a falta desses conceitos. A lista adiciona muitos métodos para suportar o conceito de sequência que a interface Collection não fornece. conceito central é o índice . como adicionar (índice, elemento), obter (índice), pesquisar (indexOf ()), remover (index) o elemento. A lista também fornece a subLista " Exibição de coleção " . Conjunto não tem vista. não tem acesso posicional. A lista também fornece muitos algoritmos na classe Coleções . classificação (Lista), Pesquisa binária (Lista), reversão (Lista), reprodução aleatória (Lista), preenchimento (Lista). o método params é a interface List . elementos duplicados são apenas o resultado de conceitos. não é a diferença essencial.
Portanto, a diferença essencial é o conceito. Conjunto é o conceito de conjunto de matemática. Lista é o conceito de sequência.
Aqui está um exemplo claro com o groovy. eu crio um conjunto e uma lista. então eu tento armazenar 20 valor gerado aleatoriamente dentro de cada lista. o valor gerado pode estar no intervalo de 0 a 5
s =[] as Set
l =[]
max =5
print "random Numbers :"20.times{
e =(int)Math.random()*max
s << e
l << e
print "$e, "}
println "\n"
println "Set : $s "
println "list : $l
Conjunto:
um conjunto não pode ter elementos duplicados em suas coleções. também é uma coleção não ordenada. Para acessar os dados de Set, é necessário usar apenas o Iterator e a recuperação baseada em índice não é possível. É usado principalmente sempre que necessário, coleção de exclusividade.
Lista:
uma lista pode ter elementos duplicados, com o natural ordenado à medida que é inserido. Assim, eles podem ser recuperados com base no índice ou no iterador. É amplamente usado para armazenar coleções que precisam ser acessadas com base no índice.
Acabei de abordar o tópico mais importante do Java chamado Collections Framework. Pensei em compartilhar meu pouco conhecimento sobre coleções com você. Lista, Conjunto, Mapa são o tópico mais importante. Então, vamos começar com List e Set.
Diferença entre Lista e Conjunto:
List é uma classe de coleção que estende a AbstractListclasse, enquanto Set é uma classe de coleção que estende a AbstractSetclasse, mas ambas implementam a interface Collection.
A interface de lista permite valores duplicados (elementos), enquanto a interface de conjunto não permite valores duplicados. No caso de elementos duplicados no conjunto, ele substitui os valores mais antigos.
A interface de lista permite valores NULL onde a interface Set não permite valores nulos. No caso de usar valores nulos em Set, ele fornece NullPointerException.
A interface de lista mantém o pedido de inserção. Isso significa a maneira como adicionamos os elementos na lista da mesma maneira que os obtemos usando o iterador ou para cada estilo. Enquanto as Setimplementações não mantêm necessariamente a ordem de inserção. (Embora SortedSetuse TreeSete LinkedHashSetmantenha a ordem de inserção).
A interface de lista possui seus próprios métodos definidos, enquanto a interface Set não possui seu próprio método, portanto, o Set usa apenas os métodos da interface Collection.
A interface de lista possui uma classe herdada chamada, Vectorenquanto a interface Set não possui nenhuma classe herdada
Por último, mas não menos importante ... O listIterator()método pode ser usado apenas para percorrer os elementos em List Classes, enquanto podemos usar o método iterator () para acessar os elementos da classe Set
Mais alguma coisa podemos adicionar? Por favor deixe-me saber.
Por um lado, Liste Setsão interfaces que também têm implementações "base" na forma de uma classe abstrata (que você mencionou). Além disso, o nº 3 é completamente impreciso , pois a maioria dos conjuntos permite valores nulos (mas dependentes da implementação). Não entendo os números 5 e 7, e o número 6 Vectornão é legado, mas é apenas sincronizado e não é preferido para uso, exceto quando a sincronização é necessária.
glen3b
-3
Conjunto:
Não pode ter valores duplicados O pedido depende da implementação. Por padrão, não é solicitado. Não pode ter acesso por índice
Lista:
Pode ter valores duplicados Ordenado por padrão Pode ter acesso por índice
Respostas:
List
é uma sequência ordenada de elementos, ao passo queSet
é uma lista distinta de elementos que não é ordenada (obrigado, Quinn Taylor ).List<E>:
Set<E>:
fonte
fonte
Listas ordenadas de elemento (exclusivo ou não)
Conformidade com a interface do Java denominada
List
Pode ser acessado por índice
implemetented usando
Listas de elementos exclusivos:
Estar em conformidade com a interface do Java chamado
Set
pode não ser acessado pelo índice
implemetented usando
Ambas as interfaces
Set
eList
estão em conformidade com a interface do Java denominadaCollection
fonte
Um conjunto não pode conter elementos duplicados enquanto uma lista pode. Uma lista (em Java) também implica ordem.
fonte
Conceitualmente, geralmente nos referimos a um agrupamento não ordenado que permite duplicatas como um saco e não permite duplicatas como um conjunto.
fonte
Lista
Conjunto
fonte
Lista:
List
s geralmente permitem objetos duplicados.List
s devem ser ordenados e, portanto, acessíveis pelo índice.Classes de implementação incluem:
ArrayList
,LinkedList
,Vector
Conjunto:
Set
s não permitem objetos duplicados. A maioria das implementações não é ordenada, mas é específica.As classes de implementação incluem:
HashSet
(não ordenado),LinkedHashSet
(ordenado),TreeSet
(ordenado por ordem natural ou pelo comparador fornecido)fonte
Como estamos falando das interfaces Java, por que não olhar para o Javadoc ?!
List
é uma coleção ordenada (sequência), que normalmente permite duplicatasSet
coleção a é que não contém elementos duplicados, a ordem da iteração pode ser garantida pela implementaçãoNão há menção à falta de ordem em relação aos conjuntos: depende da implementação.
fonte
LinkedHashSet
do lado esquerdo se o código depender da ordem mais tarde. Eu só usoSet
se realmente usá-lo como um, pois você não pode assumir que a implementação subjacente é uma coisaLinkedHashSet
ou outra , pode ser hoje, mas amanhã o código será alterado e falhará.Pode não ser a resposta que você está procurando, mas o JavaDoc das classes de coleções é realmente bastante descritivo. Copiar / colado:
fonte
Um conjunto é um grupo não ordenado de objetos distintos - nenhum objeto duplicado é permitido. Geralmente é implementado usando o código de hash dos objetos que estão sendo inseridos. (Implementações específicas podem adicionar pedidos, mas a própria interface Set não.)
Uma lista é um grupo ordenado de objetos que podem conter duplicatas. Pode ser implementado com um
ArrayList
,LinkedList
, etc.fonte
List
não está ordenado malLista:
Lista permite elementos duplicados e valores nulos. Fácil de pesquisar usando o índice correspondente dos elementos e também exibirá elementos em ordem de inserção. Exemplo: (lista vinculada)
Resultado:
1
1
555
333
888
555
nulo
nulo
Valor: 1
Valor: 555
Valor: 333
Valor: 888
Valor: 555
Valor: null
Valor: null
Set:
Set não permite nenhum elemento duplicado e permite um valor nulo único. Não manterá nenhuma ordem para exibir elementos. Somente
TreeSet
será exibido em ordem crescente.Exemplo: (TreeSet)
Resultado:
all
hello
welcome
world
java.lang.NullPointerException
Set não permite valor nulo e valor duplicado
fonte
1.List permite valores duplicados e o conjunto não permite duplicados
2.List mantém a ordem em que você inseriu elementos na lista O conjunto não mantém a ordem. 3.List é uma sequência ordenada de elementos, enquanto Set é uma lista distinta de elementos que não é ordenada.
fonte
Lista versus conjunto
1) O conjunto não permite duplicatas. Lista permite duplicar. Com base na implementação do conjunto, também mantém a ordem de inserção.
por exemplo:
LinkedHashSet
. Mantém a ordem de inserção.Por favor, consulte aqui2) contém o método Por natureza do Conjunto, ele oferece melhor desempenho para acessar. O melhor caso é o (1). Mas a Lista tem um problema de desempenho para chamar
contains
.fonte
Todas as
List
classes mantêm a ordem de inserção. Eles usam implementações diferentes com base no desempenho e outras características (por exemplo,ArrayList
para velocidade de acesso a um índice específico,LinkedList
simplesmente para manter a ordem). Como não há chave, duplicatas são permitidas.As
Set
classes não mantêm a ordem de inserção. Opcionalmente, eles podem impor uma ordem específica (como emSortedSet
), mas geralmente têm uma ordem definida por implementação com base em alguma função de hash (como emHashSet
). ComoSet
s são acessados por chave, duplicatas não são permitidas.fonte
Ordenando ... uma lista tem um pedido, um conjunto não.
fonte
Poucas diferenças dignas de nota entre Lista e Conjunto em Java são fornecidas da seguinte maneira:
1) A diferença fundamental entre List e Set em Java está permitindo elementos duplicados. A lista em Java permite duplicados, enquanto o Set não permite duplicados. Se você inserir duplicado em Definir, substituirá o valor mais antigo. Qualquer implementação do conjunto em Java conterá apenas elementos exclusivos.
2) Outra diferença significativa entre List e Set em Java é a ordem. Lista é uma coleção ordenada, enquanto Set é uma coleção não ordenada. A lista mantém a ordem de inserção dos elementos, significa que qualquer elemento que foi inserido antes terá um índice mais baixo do que qualquer elemento que foi inserido depois. Definido em Java não mantém nenhuma ordem. Embora o Set forneça outra alternativa chamada SortedSet, que pode armazenar elementos Set em uma ordem de classificação específica definida pelos métodos Comparable e Comparator dos Objetos armazenados no Set.
3) A implementação popular da interface List em Java inclui ArrayList, Vector e LinkedList. Enquanto a implementação popular da interface Set inclui HashSet, TreeSet e LinkedHashSet.
É bastante claro que, se você precisar manter um pedido ou objeto de inserção e sua coleção puder conter duplicatas, a Lista é um caminho a percorrer. Por outro lado, se o seu requisito é manter uma coleção exclusiva sem duplicatas, o conjunto é o caminho a seguir.
fonte
Lista:
Conjunto:
fonte
Set<E>
eList<E>
são utilizados tanto para armazenar elementos do tipoE
. A diferença é queSet
é armazenada de maneira desordenada e não permite valores duplicados.List
é usado para armazenar elementos de maneira ordenada e permite valores duplicados.Set
elementos não podem ser acessados por uma posição de índice eList
elementos podem ser acessados com uma posição de índice.fonte
Oi Tantas respostas já são dadas ... Deixe-me apontar alguns pontos que não são mencionados até agora:
RandomAccess
interface, que é uma interface de marcador para acesso mais rápido. Nenhuma das implementações do conjunto faz isso.ListIterator
que suporta a iteração nas duas direções . O conjunto usa o Iterator que suporta apenas iteração de 1 viafonte
O maior diferente é o conceito básico.
Na interface Set and List . Conjunto é o conceito de matemática. Método Set estende collection.however não adicionar novo método. size () significa cardinalidade (mais é BitSet.cardinality, contador linear , Log Log , HyperLogLog ). addAll () significa união. retainAll () significa interseção. removeAll () significa diferença.
No entanto, liste a falta desses conceitos. A lista adiciona muitos métodos para suportar o conceito de sequência que a interface Collection não fornece. conceito central é o índice . como adicionar (índice, elemento), obter (índice), pesquisar (indexOf ()), remover (index) o elemento. A lista também fornece a subLista " Exibição de coleção " . Conjunto não tem vista. não tem acesso posicional. A lista também fornece muitos algoritmos na classe Coleções . classificação (Lista), Pesquisa binária (Lista), reversão (Lista), reprodução aleatória (Lista), preenchimento (Lista). o método params é a interface List . elementos duplicados são apenas o resultado de conceitos. não é a diferença essencial.
Portanto, a diferença essencial é o conceito. Conjunto é o conceito de conjunto de matemática. Lista é o conceito de sequência.
fonte
Aqui está um exemplo claro com o groovy. eu crio um conjunto e uma lista. então eu tento armazenar 20 valor gerado aleatoriamente dentro de cada lista. o valor gerado pode estar no intervalo de 0 a 5
O resultado :
Números aleatórios:
4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3
Conjunto:
[4, 1, 0, 2, 3]
Lista :
[4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]
Você pode ver que a diferença é que:
fonte
Assim como a resposta, SET não tem valor duplicado e a Lista pode. Obviamente, ordem é outra coisa para diferenciá-los.
fonte
Conjunto: um conjunto não pode ter elementos duplicados em suas coleções. também é uma coleção não ordenada. Para acessar os dados de Set, é necessário usar apenas o Iterator e a recuperação baseada em índice não é possível. É usado principalmente sempre que necessário, coleção de exclusividade.
Lista: uma lista pode ter elementos duplicados, com o natural ordenado à medida que é inserido. Assim, eles podem ser recuperados com base no índice ou no iterador. É amplamente usado para armazenar coleções que precisam ser acessadas com base no índice.
fonte
TÓPICO Nome: Lista VS Conjunto
Acabei de abordar o tópico mais importante do Java chamado Collections Framework. Pensei em compartilhar meu pouco conhecimento sobre coleções com você. Lista, Conjunto, Mapa são o tópico mais importante. Então, vamos começar com List e Set.
Diferença entre Lista e Conjunto:
List é uma classe de coleção que estende a
AbstractList
classe, enquanto Set é uma classe de coleção que estende aAbstractSet
classe, mas ambas implementam a interface Collection.A interface de lista permite valores duplicados (elementos), enquanto a interface de conjunto não permite valores duplicados. No caso de elementos duplicados no conjunto, ele substitui os valores mais antigos.
A interface de lista permite valores NULL onde a interface Set não permite valores nulos. No caso de usar valores nulos em Set, ele fornece
NullPointerException
.A interface de lista mantém o pedido de inserção. Isso significa a maneira como adicionamos os elementos na lista da mesma maneira que os obtemos usando o iterador ou para cada estilo. Enquanto as
Set
implementações não mantêm necessariamente a ordem de inserção. (EmboraSortedSet
useTreeSet
eLinkedHashSet
mantenha a ordem de inserção).A interface de lista possui seus próprios métodos definidos, enquanto a interface Set não possui seu próprio método, portanto, o Set usa apenas os métodos da interface Collection.
A interface de lista possui uma classe herdada chamada,
Vector
enquanto a interface Set não possui nenhuma classe herdadaPor último, mas não menos importante ... O
listIterator()
método pode ser usado apenas para percorrer os elementos em List Classes, enquanto podemos usar o método iterator () para acessar os elementos da classe SetMais alguma coisa podemos adicionar? Por favor deixe-me saber.
Obrigado.
fonte
List
eSet
são interfaces que também têm implementações "base" na forma de uma classe abstrata (que você mencionou). Além disso, o nº 3 é completamente impreciso , pois a maioria dos conjuntos permite valores nulos (mas dependentes da implementação). Não entendo os números 5 e 7, e o número 6Vector
não é legado, mas é apenas sincronizado e não é preferido para uso, exceto quando a sincronização é necessária.Conjunto:
Não pode ter valores duplicados O pedido depende da implementação. Por padrão, não é solicitado. Não pode ter acesso por índice
Lista:
Pode ter valores duplicados Ordenado por padrão Pode ter acesso por índice
fonte