Differenza tra Set e List

Differenza tra lista matrici e lista collegata

Prima di entrare nelle reali differenze, impariamo a capire cosa sono veramente?

Cos'è un set?

Ci siamo imbattuti nel concetto di Set in matematica e il Set qui più o meno significa lo stesso. Sì, è una raccolta di elementi e, nella maggior parte dei casi, una raccolta di elementi simili. Puoi provare ad aggiungere questi elementi a un Set e provare a stampare per capire come viene effettivamente memorizzato.

Inserisci in un set: 20, 50, 10, 30.

In realtà è memorizzato in un insieme come 10, 20, 30, 50.

Gli elementi sono ordinati qui e sono memorizzati non nel loro ordine di inserimento. Questa è una delle caratteristiche di Set che ordina sempre gli elementi prima della memorizzazione e, naturalmente, ci sono delle eccezioni e uno di questi è LinkedhashSet in quanto mantiene l'ordine di inserimento degli elementi.

In termini informatici, il Set include poche proprietà aggiuntive come Methods ed Ereditarietà. I metodi sono come le funzioni e svolgono determinate attività come l'aggiunta, la rimozione o l'iterazione attraverso il set di elementi. La maggior parte di noi è ben nota del termine Eredità e significa lo stesso qui. Sì, possiamo ereditare un metodo dalla sua raccolta, in modo che possa essere utilizzato con l'interfaccia Set. Ancora una volta stiamo parlando di un nuovo termine, ovvero l'Interfaccia Set, e non è altro che l'intero insieme di elementi, inclusi i Metodi.

Come implementarlo?

Solo per una migliore comprensione, abbiamo rappresentato un Set con la sua Sintassi. Dalla sintassi sottostante, è possibile identificare i diversi tipi di Set come HashSet e TreeSet.

import java.util. *;

Setexample di classe pubblica

public static void main (String args [])

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

Set set = new HashSet ();

provare

per (int i = 0; i < 5; i++)

set.add (conteggio [i]);

System.out.println (set);

TreeSet sortedSeteg = new TreeSet (set);

System.out.println ("Qui abbiamo l'output ordinato:");

System.out.println (sortedSeteg);

System.out.println ("Guarda il primo elemento:" + (intero) sortedSet.first ());

System.out.println ("Guarda l'ultimo elemento:" + (intero) sortedSet.last ());

catch (Exception e)

L'output del codice sopra riportato è il seguente.

[25, 17, 76, 12, 88]
Qui abbiamo l'output ordinato:
[12, 17, 25, 76, 88]
Guarda il primo elemento: 12
Guarda l'ultimo elemento: 88

Cos'è l'elenco?

Un elenco estende la raccolta in modo simile a come ha fatto un set, ma mantiene l'ordine di inserimento. Prova ad aggiungere i seguenti nomi a un elenco e vedere come viene aggiunto ad esso.

L'input per una lista: John, Nancy, Mary, Alice.

Come è memorizzato in una lista: John, Nancy, Mary, Alice.

Basta notare l'ordine in cui sono inseriti. È possibile identificare che "John" è il primo elemento nell'input e nell'output ed è seguito dallo stesso ordine in cui vengono inseriti i nomi. Possiamo anche considerare questa una delle principali proprietà di List.

Come implementarlo?

Vediamo alcuni dei metodi di List come ArrayList e LinkedList nella seguente sintassi.

import java.util. *;
public class Collectionssample

public static void main (String [] args)

List a1 = new ArrayList ();
a1.add ( “John”);
a1.add ( “Nancy”);
a1.add ( “Maria”);
a1.add ( “Alice”);
System.out.println ("Elementi ArrayList sono");
System.out.print ("\ t" + a1);

Lista l1 = new LinkedList ();
l1.add ( “Silvia”);
l1.add ( “Arjun”);
l1.add ( “Deepika”);
l1.add ( “Susan”);
System.out.println ();
System.out.println ("Elementi LinkedList sono");
System.out.print ("\ t" + l1);

L'output della sintassi precedente è il seguente.

Gli elementi di ArrayList sono

[John, Nancy, Mary, Alice]

Elementi di LinkedList

[Silvia, Arjun, Deepika, Susan]

È chiaro dal codice precedente che sia ArrayList che LinkedList mantengono l'ordine di inserimento.

Come sono diversi?

  • Metodi e descrizioni:

Il Set e l'Elenco hanno i suoi metodi e vediamo qui alcuni di essi.

S.No Set - Metodi Elenco - Metodi
1. Inserisci() - È aggiungere oggetti a una raccolta. void add (int index, Object obj) - Aggiunge l'oggetto 'obj' nell'indice 'specificato' della lista di richiamo e si assicura che nessun elemento venga sovrascritto spostando gli elementi precedenti.
2. chiaro() - È per rimuovere oggetti da una raccolta. booleano addAll (int index, Collection c) - Aggiunge l'intera collezione 'c' alla lista di invocazione e all''indice 'specificato. Garantisce inoltre che nessun elemento venga sovrascritto. Possiamo anche verificare la correttezza delle sue operazioni esaminando il valore di ritorno. Restituisce 'true' se la modifica ha esito positivo altrimenti restituisce un valore 'false'.
3. contains () - È per controllare se il Set contiene un certo oggetto in esso. Restituisce un valore 'true' se l'oggetto è presente nel Set. Oggetto get (indice int) - Restituisce l'elemento o l'oggetto nell'indice specificato.
4. è vuoto() - È per determinare se la raccolta aiuta come nessun elemento in essa. Restituisce un valore 'true' se non ci sono elementi. int lastIndexOf (oggetto obj) - Funziona come il contrario del indice di() Metodo. Restituisce l'ultima occorrenza dell'oggetto Object 'obj' e viene restituito un valore '1' se non vi è alcun oggetto di questo tipo nell'elenco. Pertanto, può anche essere usato come contains () Metodo dell'interfaccia Set.
6. rimuovere() - È per rimuovere un elemento da una raccolta specificandolo come parametro del metodo. ListIterator listIterator () - Restituisce un iteratore all'indice di partenza della lista.
7. taglia() - È per contare il numero di oggetti o elementi che ha una collezione. ListIterator listIterator (int index) - Aiuta a scorrere l'Elenco di invocazione a partire dall'indice specificato.
8. - Rimuovi oggetto (int index) - Elimina l'oggetto nell'indice specificato e restituisce l'elemento eliminato come risultato. Decrementa anche gli indici delle liste risultanti per riflettere la cancellazione.
9. - Insieme di oggetti (int index, Object obj) - Assegna l'oggetto 'obj' alla lista di invocazione nell'indice 'specificato'.
10. - Elenco sottocartella (int start, int end) - È includere gli oggetti dall'indice 'start' all'indice 'end' nella lista che ha invocato il metodo.
  • Manutenzione dell'ordine di inserzione:

Il Set non mantiene mai l'ordine degli elementi in cui sono inseriti mentre l'Elenco lo mantiene. Esiste un'eccezione a questa regola per LinkedHashSet poiché mantiene l'ordine di inserimento ma l'altro Set come HashSet e TreeSet ordina gli elementi prima di memorizzarlo. Lo stesso è descritto con esempi di seguito.

Impostato Ingresso: gatto, bambola, mela.

Memorizzato come: Apple, Cat, Doll.

Ingresso elenco: gatto, bambola, mela.

Memorizzato come: Gatto, Bambola, Mela.

  • La presenza di duplicati:

Un set non consente mai duplicati mentre un elenco lo consente. Se un valore duplicato deve essere aggiunto a una lista, viene sovrascritto. Guarda i campioni per impostare ed elencare i duplicati.

Imposta ingresso: 10, 20, 20, 50.

Memorizzato come: 10, 20, 50.

Ingresso lista: 10, 20, 20, 50.

Memorizzato come: 10, 20, 20, 50.

  • Valori nulli:

Un set può avere solo un valore nullo mentre un elenco può avere più di un valore nullo e non è limitato a nessun numero.

Imposta input: null, null, Man, Dog, Plane.

Memorizzato come: null, Cane, Uomo, Piano.

Input di lista: null, null, Man, Dog, Plane.

Memorizzato come: null, null, Man, Dog, Plane.

  • Uso di Iterator e ListIterator:

Il metodo Iterator funziona bene sia con Set che con List mentre il metodo ListIterator funziona solo con List. ListIterator può essere utilizzato per attraversare avanti e indietro l'elenco.

  • La presenza di una classe legacy:

Il Set non ha una classe legacy, mentre l'interfaccia List ha un'eredità chiamata "vettore". Un vettore utilizza l'interfaccia Elenco e quindi mantiene l'ordine di inserimento. A causa degli sforzi di sincronizzazione, le prestazioni del vettore in aggiunte, cancellazioni e aggiornamenti sono leggermente più lente.

  • implementazioni:

Poche delle implementazioni Set sono HashSet, LinkedHashSet e TreeSet. Poche delle implementazioni di List includono ArrayList e LinkedList.

Quando usare Set & List?

L'utilizzo di Set e List dipende esclusivamente dal requisito di mantenimento dell'ordine di inserimento. Come abbiamo appreso che un Set non mantiene mai l'ordine di inserimento, può essere usato quando l'ordine è di minore importanza. In modo simile, utilizzare l'Elenco quando è necessario mantenere anche la sequenza di inserimento.

Differenze in una forma tabulare:

S.No Differenze in Impostato Elenco
1. Ordine di inserzione Mantiene l'ordine di inserimento. Il primo inserito rimane in primo luogo e così via indipendentemente dal suo valore. Non mantiene mai l'ordine di inserimento.
2. metodi Usa i metodi come add (), clear (), contains (), isEmpty (), remove () e size (). Utilizza i metodi come add (), addAll (), get (), lastIndexOf (), ListIterator () con o senza parametro, remove (), set () e subList ().
3. duplicati Non consente mai duplicati e nel caso di tali aspetti, il valore viene sovrascritto. Permette duplicati.
4. Valori null Può avere solo un valore nullo al massimo. Può avere qualsiasi numero di valori nulli.
5. Uso di Iterator () e listIterator () Utilizza solo il metodo iteratore (). Usa sia iterator () che listIterator ().
6. Presenza di una classe legacy Non esiste una lezione di Legacy. Ha come classe Legacy chiamata come vettore.
7. implementazioni Poche delle implementazioni dell'interfaccia Set sono HashSet, LinkedHashSet e Tree Set. Poche delle implementazioni dell'interfaccia Elenco sono LinkedList e ArrayList.

Spero, abbiamo incluso ogni possibile differenza tra il Set e la Lista. Se ritieni di aver perso qualcosa, ti preghiamo di farcelo sapere.