Java Language
Imposta
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
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
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
Set<String> set = new TreeSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Apple", "Banana", "Strawberry"]
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:
- HashSet: un set supportato da una tabella hash (in realtà un'istanza di HashMap)
- HashSet collegato: un set supportato dalla tabella hash e dall'elenco collegato, con un ordine di iterazione prevedibile
- 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]