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

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 - Insertion Order

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 - Av compareTo() eller 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"]

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:

  1. HashSet: En uppsättning som stöds av en hash-tabell (faktiskt en HashMap-instans)
  2. Länkad HashSet: En uppsättning som stöds av Hash-tabellen och länkad lista, med förutsägbar iterationsordning
  3. 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]


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow