Diferença entre Set e List Diferença entre
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. |