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

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 - LinkedHashSet

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 - Mit compareTo() oder 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"]

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:

  1. HashSet: Ein Satz, der durch eine Hashtabelle (tatsächlich eine HashMap-Instanz) gesichert wird.
  2. Linked HashSet: Ein durch Hash-Tabelle und verknüpfte Liste gesichertes Set mit einer vorhersagbaren Iterationsreihenfolge
  3. 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]


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow