Java Language
Sets
Suche…
Ein HashSet mit Werten deklarieren
Sie können eine neue Klasse erstellen, die von HashSet erbt:
Set<String> h = new HashSet<String>() {{
add("a");
add("b");
}};
Einzeilige Lösung:
Set<String> h = new HashSet<String>(Arrays.asList("a", "b"));
Guave verwenden:
Sets.newHashSet("a", "b", "c")
Streams verwenden:
Set<String> set3 = Stream.of("a", "b", "c").collect(toSet());
Typen und Verwendung von Sets
Im Allgemeinen sind Sets eine Art Sammlung, in der eindeutige Werte gespeichert werden. Die Eindeutigkeit wird durch die Methoden equals()
und hashCode()
.
Die Sortierung wird durch den Satztyp bestimmt.
HashSet
- Zufällige Sortierung
Set<String> set = new HashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Strawberry", "Banana", "Apple"]
LinkedHashSet
- LinkedHashSet
Set<String> set = new LinkedHashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Banana", "Apple", "Strawberry"]
TreeSet
- Mit compareTo()
oder 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"]
Initialisierung
Ein Set ist eine Collection, die keine doppelten Elemente enthalten kann. Es modelliert die mathematische Mengenabstraktion.
Set
hat seine Implementierung in verschiedenen Klassen wie HashSet
, TreeSet
, LinkedHashSet
.
Zum Beispiel:
HashSet:
Set<T> set = new HashSet<T>();
Hier kann T
String
, Integer
oder ein beliebiges anderes Objekt sein . HashSet ermöglicht eine schnelle Suche nach O (1), sortiert jedoch nicht die hinzugefügten Daten und verliert die Einfügereihenfolge der Elemente.
TreeSet:
Es speichert die Daten in einer sortierten Weise, wobei für grundlegende Operationen, die O (lg (n)) benötigen, eine gewisse Geschwindigkeit geopfert wird. Die Einfügereihenfolge der Artikel wird nicht beibehalten.
TreeSet<T> sortedSet = new TreeSet<T>();
LinkedHashSet:
Es ist eine verknüpfte HashSet
von HashSet
Once, bei der die Elemente in der Reihenfolge, in der sie hinzugefügt wurden, HashSet
. Der Inhalt wird nicht sortiert. O (1) grundlegende Operationen werden bereitgestellt, jedoch sind für das HashSet
der unterstützenden verknüpften Liste höhere Kosten als für HashSet
.
LinkedHashSet<T> linkedhashset = new LinkedHashSet<T>();
Grundlagen des Sets
Was ist ein Set?
Ein Satz ist eine Datenstruktur, die einen Satz von Elementen mit der wichtigen Eigenschaft enthält, dass keine zwei Elemente im Satz gleich sind.
Arten von Set:
- HashSet: Ein Satz, der durch eine Hashtabelle (tatsächlich eine HashMap-Instanz) gesichert wird.
- Linked HashSet: Ein durch Hash-Tabelle und verknüpfte Liste gesichertes Set mit einer vorhersagbaren Iterationsreihenfolge
- TreeSet: Eine NavigableSet-Implementierung basierend auf einer TreeMap.
Set erstellen
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
Elemente zu einem Set hinzufügen
Elemente können mit der add()
-Methode zu einem Set hinzugefügt werden
set.add(12); // - Adds element 12 to the set
set.add(13); // - Adds element 13 to the set
Unser Set nach Ausführung dieser Methode:
set = [12,13]
Löschen Sie alle Elemente eines Sets
set.clear(); //Removes all objects from the collection.
Nach diesem Set wird:
set = []
Prüfen Sie, ob ein Element Teil des Sets ist
Die Existenz eines Elements in der Gruppe kann mit der Methode contains()
überprüft werden
set.contains(0); //Returns true if a specified object is an element within the set.
Ausgabe: False
Prüfen Sie, ob ein Set leer ist
isEmpty()
Methode isEmpty()
kann verwendet werden, um zu überprüfen, ob ein Set leer ist.
set.isEmpty(); //Returns true if the set has no elements
Ausgabe: True
Entfernen Sie ein Element aus dem Set
set.remove(0); // Removes first occurrence of a specified object from the collection
Überprüfen Sie die Größe des Sets
set.size(); //Returns the number of elements in the collection
Ausgabe: 0
Erstellen Sie eine Liste aus einem vorhandenen Set
Verwenden einer neuen Liste
List<String> list = new ArrayList<String>(listOfElements);
Verwenden der List.addAll () -Methode
Set<String> set = new HashSet<String>();
set.add("foo");
set.add("boo");
List<String> list = new ArrayList<String>();
list.addAll(set);
Java 8 Steam API verwenden
List<String> list = set.stream().collect(Collectors.toList());
Duplikate mit Set beseitigen
Angenommen , Sie eine Sammlung haben elements
, und Sie wollen eine weitere Sammlung erstellen , um die gleichen Elemente enthalten , aber mit allen Duplikate eliminiert:
Collection<Type> noDuplicates = new HashSet<Type>(elements);
Beispiel :
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);
Ausgabe :
noDuplicates = [Marco, Emily, John, Jenny]