Java Language
Ställer
Sök…
Förklarar en HashSet med värden
Du kan skapa en ny klass som ärver från HashSet:
Set<String> h = new HashSet<String>() {{
add("a");
add("b");
}};
En linje lösning:
Set<String> h = new HashSet<String>(Arrays.asList("a", "b"));
Använda guava:
Sets.newHashSet("a", "b", "c")
Använda strömmar:
Set<String> set3 = Stream.of("a", "b", "c").collect(toSet());
Typer och användning av uppsättningar
Generellt sett är en typ av samling som lagrar unika värden. Unikhet bestäms med metoderna equals()
och hashCode()
.
Sortering bestäms av uppsättningstypen.
HashSet
- Slumpmässig sortering
Set<String> set = new HashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Strawberry", "Banana", "Apple"]
LinkedHashSet
- Insertion Order
Set<String> set = new LinkedHashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Banana", "Apple", "Strawberry"]
TreeSet
- Av compareTo()
eller 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"]
initiering
En uppsättning är en samling som inte kan innehålla duplicerade element. Den modellerar den matematiska inställda abstraktionen.
Set
har dess implementering i olika klasser som HashSet
, TreeSet
, LinkedHashSet
.
Till exempel:
HashSet:
Set<T> set = new HashSet<T>();
Här kan T
vara String
, Integer
eller något annat objekt . HashSet möjliggör snabb uppslagning av O (1) men sorterar inte de data som läggs till den och förlorar införingsordning för objekt.
TreeSet:
Den lagrar data på ett sorterat sätt som offrar viss hastighet för grundläggande operationer som tar O (lg (n)). Det upprätthåller inte införingsordningen för föremål.
TreeSet<T> sortedSet = new TreeSet<T>();
LinkedHashSet:
Det är en länkad HashSet
av HashSet
Once kan iterera över artiklarna i den ordning de lades till. Sortering tillhandahålls inte för dess innehåll. O (1) grundläggande operationer tillhandahålls, men det är högre kostnader än HashSet
upprätthålla den backade länkade listan.
LinkedHashSet<T> linkedhashset = new LinkedHashSet<T>();
Grunderna i Set
Vad är en uppsättning?
En uppsättning är en datastruktur som innehåller en uppsättning element med en viktig egenskap som inga två element i uppsättningen är lika.
Typer uppsättning:
- HashSet: En uppsättning som stöds av en hash-tabell (faktiskt en HashMap-instans)
- Länkad HashSet: En uppsättning som stöds av Hash-tabellen och länkad lista, med förutsägbar iterationsordning
- TreeSet: En NavigableSet-implementering baserad på en TreeMap.
Skapa en uppsättning
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
Lägga till element i en uppsättning
Element kan läggas till en uppsättning med metoden add()
set.add(12); // - Adds element 12 to the set
set.add(13); // - Adds element 13 to the set
Vår uppsättning efter att ha genomfört den här metoden:
set = [12,13]
Radera alla element i en uppsättning
set.clear(); //Removes all objects from the collection.
Efter denna uppsättning kommer:
set = []
Kontrollera om ett element är en del av uppsättningen
Förekomsten av ett element i uppsättningen kan kontrolleras med metoden contains()
set.contains(0); //Returns true if a specified object is an element within the set.
Output: False
Kontrollera om en uppsättning är tom
isEmpty()
kan användas för att kontrollera om en uppsättning är tom.
set.isEmpty(); //Returns true if the set has no elements
Output: True
Ta bort ett element från uppsättningen
set.remove(0); // Removes first occurrence of a specified object from the collection
Kontrollera storleken på uppsättningen
set.size(); //Returns the number of elements in the collection
Utgång: 0
Skapa en lista från en befintlig uppsättning
Använda en ny lista
List<String> list = new ArrayList<String>(listOfElements);
Använda metoden List.addAll ()
Set<String> set = new HashSet<String>();
set.add("foo");
set.add("boo");
List<String> list = new ArrayList<String>();
list.addAll(set);
Använda Java 8 Steam API
List<String> list = set.stream().collect(Collectors.toList());
Eliminera dubbletter med Set
Anta att du har en samling elements
, och du vill skapa en annan samling som innehåller samma element men med alla dubbletter elimineras:
Collection<Type> noDuplicates = new HashSet<Type>(elements);
Exempel :
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);
Utgång :
noDuplicates = [Marco, Emily, John, Jenny]