Java Language
sets
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
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
- By compareTo()
of 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"]
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:
- HashSet: een set met een hash-tabel (eigenlijk een HashMap-instantie)
- Linked HashSet: een set ondersteund door Hash-tabel en gekoppelde lijst, met voorspelbare iteratievolgorde
- 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]