Ricerca…


Dichiarazione di un hashset con valori

Puoi creare una nuova classe che eredita da HashSet:

Set<String> h = new HashSet<String>() {{
    add("a");
    add("b");
}};

Una soluzione di linea:

Set<String> h = new HashSet<String>(Arrays.asList("a", "b"));

Utilizzando guava:

Sets.newHashSet("a", "b", "c")

Usando i flussi:

Set<String> set3 = Stream.of("a", "b", "c").collect(toSet());

Tipi e utilizzo degli insiemi

In generale, gli insiemi sono un tipo di raccolta che memorizza valori univoci. L'univocità è determinata dai metodi equals() e hashCode() .

L'ordinamento è determinato dal tipo di set.

HashSet - Ordinamento casuale

Java SE 7
Set<String> set = new HashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Strawberry", "Banana", "Apple"]

LinkedHashSet - Ordine di inserzione

Java SE 7
Set<String> set = new LinkedHashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Banana", "Apple", "Strawberry"]

TreeSet - Per compareTo() o Comparator

Java SE 7
Set<String> set = new TreeSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Apple", "Banana", "Strawberry"]
Java SE 7
Set<String> set = new TreeSet<> ((string1, string2) -> string2.compareTo(string1));
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Strawberry", "Banana", "Apple"]

Inizializzazione

Un Set è una Collezione che non può contenere elementi duplicati. Modella l'astrazione dell'insieme matematico.

Set ha la sua implementazione in varie classi come HashSet , TreeSet , LinkedHashSet .

Per esempio:

HashSet:

Set<T> set = new HashSet<T>();

Qui T può essere String , Integer o qualsiasi altro oggetto . HashSet consente una rapida ricerca di O (1) ma non ordina i dati aggiunti e perde l'ordine di inserimento degli articoli.

TreeSet:

Memorizza i dati in modo ordinato sacrificando una certa velocità per le operazioni di base che richiedono O (lg (n)). Non mantiene l'ordine di inserzione degli articoli.

TreeSet<T> sortedSet = new TreeSet<T>();

LinkedHashSet:

Si tratta di un'implementazione di elenchi collegati di HashSet Una volta può scorrere gli articoli nell'ordine in cui sono stati aggiunti. L'ordinamento non è fornito per il suo contenuto. Vengono fornite le operazioni di base O (1), tuttavia è presente un costo maggiore rispetto a HashSet nel mantenimento dell'elenco dei collegamenti di backup.

LinkedHashSet<T> linkedhashset = new LinkedHashSet<T>();

Nozioni di base di Set

Cos'è un set?

Un set è una struttura di dati che contiene un insieme di elementi con un'importante proprietà che nessun elemento nel set è uguale.

Tipi di set:

  1. HashSet: un set supportato da una tabella hash (in realtà un'istanza di HashMap)
  2. HashSet collegato: un set supportato dalla tabella hash e dall'elenco collegato, con un ordine di iterazione prevedibile
  3. TreeSet: un'implementazione NavigableSet basata su una TreeMap.

Creare un set

Set<Integer> set = new HashSet<Integer>(); // Creates an empty Set of Integers

Set<Integer> linkedHashSet = new LinkedHashSet<Integer>(); //Creates a empty Set of Integers, with predictable iteration order

Aggiunta di elementi a un set

Gli elementi possono essere aggiunti a un set usando il metodo add()

 set.add(12); //  - Adds element 12 to the set
 set.add(13); //  - Adds element 13 to the set

Il nostro set dopo aver eseguito questo metodo:

set = [12,13]

Elimina tutti gli elementi di un Set

set.clear();  //Removes all objects from the collection.

Dopo questo set sarà:

set = []

Controlla se un elemento fa parte del Set

L'esistenza di un elemento nel set può essere verificata usando il metodo contains()

set.contains(0);  //Returns true if a specified object is an element within the set.

Uscita: False

Controlla se un Set è vuoto

isEmpty() metodo isEmpty() può essere usato per verificare se un Set è vuoto.

set.isEmpty();  //Returns true if the set has no elements

Uscita: vero

Rimuovi un elemento dal Set

 set.remove(0); // Removes first occurrence of a specified object from the collection

Controlla la dimensione del set

set.size(); //Returns the number of elements in the collection

Uscita: 0

Crea una lista da un Set esistente

Usando una nuova lista

List<String> list = new ArrayList<String>(listOfElements);

Utilizzando il metodo List.addAll ()

    Set<String> set = new HashSet<String>();
    set.add("foo");
    set.add("boo");
    
    List<String> list = new ArrayList<String>();
    list.addAll(set);

Utilizzo dell'API Java 8 Steam

List<String> list = set.stream().collect(Collectors.toList());

Eliminare i duplicati usando Set

Supponiamo di avere elements raccolta e di voler creare un'altra raccolta contenente gli stessi elementi ma eliminando tutti i duplicati :

Collection<Type> noDuplicates = new HashSet<Type>(elements);

Esempio :

List<String> names = new ArrayList<>(
        Arrays.asList("John", "Marco", "Jenny", "Emily", "Jenny", "Emily", "John"));
Set<String> noDuplicates = new HashSet<>(names);
System.out.println("noDuplicates = " + noDuplicates);

Uscita :

noDuplicates = [Marco, Emily, John, Jenny]


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow