Diferença entre Set e List Diferença entre

Anonim

Diferença entre Lista de Arrays e Lista Ligada

Antes de entrar nas diferenças reais, vamos conhecer o que realmente são?

O que é um conjunto?

Nós encontramos o conceito de Set in mathematics e o Set here mais ou menos significa o mesmo. Sim, é uma coleção de elementos e, na maioria dos casos, uma coleção de elementos similares. Você pode tentar adicionar esses elementos a um Conjunto e tentar imprimir para entender, como ele está realmente armazenado.

Entrada para um conjunto: 20, 50, 10, 30.

É realmente armazenado em um conjunto como 10, 20, 30, 50.

Os elementos são classificados aqui e são armazenados não em sua ordem de inserção. Esta é uma das características do Set que classifica sempre os elementos antes de armazenar e, claro, há exceções para ele e um deles é o LinkedhashSet, pois mantém a ordem de inserção dos elementos.

Em termos de computador, o Set inclui algumas propriedades adicionais, como métodos e herança. Os métodos são como funções e eles fazem determinadas tarefas, como adicionar, remover ou iterar através do conjunto de elementos. A maioria de nós é bem conhecida do termo Herança e isso significa o mesmo aqui. Sim, podemos herdar um Método de sua Coleção, para que possa ser usado com a Interface Definida. Mais uma vez estamos falando de um novo termo i. e. o Set Interface, e não é nada mais do que todo o conjunto de elementos, incluindo os Métodos.

Como implementá-lo?

Apenas para uma melhor compreensão, representamos um conjunto com sua sintaxe. A partir da sintaxe abaixo, você pode identificar os diferentes tipos de Conjunto, como HashSet e TreeSet.

importar java. util. *;

classe pública Setexample {

public static void main (String args []) {

int count [] = {34, 22, 10, 60, 30, 22} {25, 17, 76, 12, 88, 57};

Set set = new HashSet ();

tente {

para (int i = 0; i <5; i ++) {

definido. adicionar (contar [i]);

}

Sistema. Fora. println (set);

TreeSet sortedSeteg = novo TreeSet (set);

Sistema. Fora. println ("Aqui temos a saída classificada:");

Sistema. Fora. println (sortedSeteg);

Sistema. Fora. println ("Olhe para o primeiro elemento:" + (Inteiro) classificadoSet. primeiro ());

Sistema. Fora. println ("Olhe para o último elemento:" + (Inteiro) classificadoSet. last ());

}

captura (Exceção e) {}

}

}

A saída do código acima é a seguinte.

[25, 17, 76, 12, 88]

Aqui temos a saída classificada:

[12, 17, 25, 76, 88]

Olhe para o primeiro elemento: 12 > Olhe para o último elemento: 88

O que é List?

A Lista estende a Coleção semelhante a como um Conjunto fez, mas mantém a ordem de inserção. Você tenta adicionar os seguintes nomes a uma lista e ver como é adicionado a ele.

A entrada para uma Lista:

John, Nancy, Mary, Alice. Como está armazenado em uma Lista:

John, Nancy, Mary, Alice. Basta notar o pedido em que estão inseridos. Você pode identificar que 'John' é o primeiro elemento na entrada e saída e é seguido pela mesma ordem em que os nomes são inseridos. Podemos até considerar esta uma das principais propriedades da Lista.

Como implementá-lo?

Deixe-nos olhar para alguns dos métodos da Lista como ArrayList e LinkedList na sintaxe abaixo.

importar java. util. *;

public class Collectionssample {

public static void main (String [] args) {

Lista a1 = novo ArrayList ();

a1. adicionar ("John");

a1. adicionar ("Nancy");

a1. adicionar ("Mary");

a1. adicionar ("Alice");

Sistema. Fora. println ("ArrayList Elements are");

Sistema. Fora. imprimir (" t" + a1);

Lista l1 = new LinkedList ();

l1. adicionar ("Silvia");

l1. adicionar ("Arjun");

l1. adicionar ("Deepika");

l1. adicionar ("Susan");

Sistema. Fora. println ();

Sistema. Fora. println ("Elementos LinkedList" são);

Sistema. Fora. imprimir (" t" + l1); }}

A saída da sintaxe acima é a seguinte.

Os elementos do ArrayList são

[John, Nancy, Mary, Alice]

Elementos LinkedList

[Silvia, Arjun, Deepika, Susan]

É muito claro a partir do código acima que tanto o ArrayList e o LinkedList mantém a ordem de inserção.

Como eles diferem?

Métodos e Descrições:

  • O Conjunto e a Lista têm seus próprios métodos e nos permitem ver alguns deles aqui.

S. Não

Definir - Métodos Lista - Métodos 1.
add () - É adicionar objetos a uma coleção. void add (int index, Object obj) - Adiciona o objeto 'obj' no 'índice' especificado da lista de invocação e assegura que nenhum elemento seja substituído ao mudar os elementos anteriores. 2.
clear () - É remover objetos de uma coleção. boolean addAll (int index, Collection c) - Adiciona toda a coleção 'c' à lista de invocação e ao 'índice' especificado. Também garante que nenhum elemento seja substituído. Também podemos verificar a correção de sua operação examinando o valor de retorno. Ele retorna 'true' se a mudança for bem-sucedida de outra forma, ele retorna um valor 'false'. 3.
contém () - É para verificar se o Conjunto contém um determinado objeto nele. Ele retorna um valor 'true' se o objeto estiver presente no Set. Object get (int index) - Retorna o elemento ou o objeto no "índice" especificado. 4.
isEmpty () - É determinar se a coleção ajuda a como nenhum elemento nele. Ele retorna um valor 'verdadeiro' se não houver nenhum elemento. int lastIndexOf (Object obj) - Funciona de forma semelhante ao inverso do método indexOf () . Ele retorna a última ocorrência do Objeto especificado 'obj' e um valor '1' é retornado se não houver nenhum desses objetos na lista. Portanto, ele também pode ser usado como contém () Método da Interface definida. 6.
remove () - É para remover um elemento de uma coleção especificando-o como um parâmetro para o método. ListIterator listIterator () - Retorna um iterador para o índice inicial da Lista. 7.
size () - É para contar o número de objetos ou elementos que uma coleção possui. ListIterator listIterator (int index) - Ajuda na iteração através da lista de invocação a partir do "índice" especificado. 8.
- Objeto remover (índice int) - Ele exclui o objeto no "índice" especificado e retorna o elemento excluído como resultado. Também diminui os índices da lista resultante para refletir a exclusão. 9.
- Conjunto de objeto (índice int, objeto obj) - É atribuir o objeto 'obj' à lista de invocação no "índice" especificado. 10.
- Listar sub-lição (int start, int end) - É incluir os objetos do índice 'start' no índice 'end' na lista que invocou o método. manutenção da ordem de inserção:
  • O Conjunto nunca mantém a ordem dos elementos em que eles estão inseridos, enquanto a Lista o mantém. Há uma exceção para esta regra para LinkedHashSet, pois mantém a ordem de inserção, mas o outro Set como HashSet e TreeSet classifica os elementos antes de armazená-lo. O mesmo é descrito com os exemplos abaixo.

Definir

Entrada: Gato, Boneca, Maçã. Armazenado como: Maçã, Gato, Boneca.

Entrada de lista: gato, boneca, maçã.

Armazenado como: Gato, Boneca, Maçã.

A presença de Duplicados:

  • A Set nunca permite duplicatas enquanto uma Lista permite. Se um valor duplicado tiver que ser adicionado a uma lista, ele será substituído. Olhe para as amostras para duplicatas de conjunto e lista.

Definir entrada: 10, 20, 20, 50.

Armazenado como: 10, 20, 50.

Entrada de lista: 10, 20, 20, 50.

Armazenado como: 10, 20, 20, 50.

Valores nulos:

  • Um conjunto pode ter apenas um valor nulo, enquanto uma lista pode ter mais de um valor nulo e não está restrita a nenhum número.

Set Input: null, null, Man, Dog, Plane.

Armazenado como: nulo, Cão, Homem, Plano.

Entrada de lista: nulo, nulo, Homem, Cão, Plano.

Armazenado como: nulo, nulo, Homem, Cão, Plano.

Uso do Iterator & ListIterator:

  • O método Iterator funciona bem com Set e List, enquanto o método ListIterator funciona apenas com List. O ListIterator pode ser usado para percorrer a frente e para trás através da Lista.

A presença da Legacy Class:

  • O Set não possui nenhuma classe legada, enquanto a interface List tem um legado chamado "vetor". Um vetor usa a interface Lista e, portanto, mantém a ordem de inserção. Devido aos esforços de sincronização, o desempenho do vetor em adições, exclusões e atualizações é pouco mais lento.

Implementações:

  • Poucas das implementações do conjunto são HashSet, LinkedHashSet e TreeSet. Poucas das implementações da lista incluem ArrayList e LinkedList.

Quando usar Set & List?

O uso de Set e List é puramente dependente do requisito de manutenção da ordem de inserção.Como aprendemos que um Conjunto nunca mantém a ordem de inserção, ele pode ser usado quando a ordem é de menor importância. De forma semelhante, use a Lista quando precisar manter a seqüência de inserção também.

Diferenças em uma forma tabular:

S. Não

Diferenças em Definir Lista 1.
Ordem de inserção Mantém a ordem de inserção. O primeiro inserido permanece em primeiro lugar e assim por diante, independentemente do seu valor. Nunca mantém a ordem de inserção. 2.
Métodos Ele usa os métodos como add (), clear (), contains (), isEmpty (), remove () e size (). Ele usa os métodos como add (), addAll (), get (), lastIndexOf (), ListIterator () com ou sem parâmetro, remove (), set () e subList (). 3.
Duplicates Nunca permite duplicatas e, no caso de tais aparências, o valor é substituído. Permite duplicatas. 4.
Valores nulos Pode ter apenas um valor nulo no máximo. Pode ter qualquer número de valores nulos. 5.
Uso do Iterator () & listIterator () Ele usa apenas o iterador do método (). Ele usa tanto o iterador () quanto o listIterator (). 6.
Presença da Classe Legacy Não existe uma classe Legacy. Tem como a classe Legacy chamada como vetor. 7.
Implementações Poucas das implementações da interface Set são HashSet, LinkedHashSet e Tree Set. Poucas das implementações da interface da lista são LinkedList e ArrayList. Espero, incluímos todas as diferenças possíveis entre o conjunto e a lista. Se você achar que perdeu alguma coisa, informe-nos.