Zoeken…


Een HashSet met waarden declareren

U kunt een nieuwe klasse maken die overneemt van HashSet:

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

Eén lijn oplossing:

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

Guava gebruiken:

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

Streams gebruiken:

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

Typen en gebruik van sets

Over het algemeen zijn sets een soort verzameling waarin unieke waarden worden opgeslagen. Uniciteit wordt bepaald door de methoden equals() en hashCode() .

Sorteren wordt bepaald door het type set.

HashSet - Willekeurig sorteren

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 - By compareTo() of 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"]

initialisatie

Een set is een verzameling die geen dubbele elementen kan bevatten. Het modelleert de wiskundige set abstractie.

Set heeft zijn implementatie in verschillende klassen zoals HashSet , TreeSet , LinkedHashSet .

Bijvoorbeeld:

HashSet:

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

Hier kan T String , Integer of elk ander object zijn . HashSet zorgt voor een snelle opzoeking van O (1) maar sorteert de toegevoegde gegevens niet en verliest de invoegvolgorde van items.

TreeSet:

Het slaat gegevens op een gesorteerde manier op, waarbij enige snelheid wordt opgeofferd voor basisbewerkingen die O (lg (n)) kosten. De invoegvolgorde van items blijft niet behouden.

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

LinkedHashSet:

Het is een implementatie van een gelinkte lijst van HashSet Once die de items kan herhalen in de volgorde waarin ze zijn toegevoegd. De inhoud wordt niet gesorteerd. O (1) Basisbewerkingen worden verstrekt, maar er zijn hogere kosten dan HashSet voor het onderhouden van de gekoppelde back-uplijst.

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

Basisprincipes van Set

Wat is een set?

Een set is een gegevensstructuur die een set elementen bevat met een belangrijke eigenschap dat geen twee elementen in de set gelijk zijn.

Soorten Set:

  1. HashSet: een set met een hash-tabel (eigenlijk een HashMap-instantie)
  2. Linked HashSet: een set ondersteund door Hash-tabel en gekoppelde lijst, met voorspelbare iteratievolgorde
  3. TreeSet: een NavigableSet-implementatie op basis van een TreeMap.

Een set maken

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

Elementen aan een set toevoegen

Elementen kunnen aan een set worden toegevoegd met de methode add()

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

Onze set na het uitvoeren van deze methode:

set = [12,13]

Verwijder alle elementen van een set

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

Nadat deze set is:

set = []

Controleer of een element deel uitmaakt van de set

Het bestaan van een element in de set kan worden gecontroleerd met de methode contains()

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

Uitgang: False

Controleer of een set leeg is

isEmpty() methode isEmpty() kan worden gebruikt om te controleren of een set leeg is.

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

Uitgang: True

Verwijder een element uit de set

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

Controleer de grootte van de set

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

Uitgang: 0

Maak een lijst van een bestaande set

Een nieuwe lijst gebruiken

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

De methode List.addAll () gebruiken

    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 gebruiken

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

Duplicaten verwijderen met Set

Stel je hebt een verzameling elements , en je wilt naar een andere verzameling met dezelfde elementen te maken, maar met alle duplicaten geëlimineerd:

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

Voorbeeld :

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);

Uitgang :

noDuplicates = [Marco, Emily, John, Jenny]


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow