Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java TreeSet volledig: Operaties, methoden en praktische voorbeelden

Java TreeSet

De TreeSet-klasse van het Java Collections Framework biedt de functionaliteit van een boomdatastructuur. Het implementeert de NavigableSet-interface.

Een TreeSet aanmaken

Om een tree set aan te maken, moet je het java.util.TreeSet-pakket importeren:

TreeSet<Integer> getallen = new TreeSet<>();

Standaard worden elementen natuurlijk gesorteerd (oplopend). Je kunt de sortering aanpassen met de Comparator-interface.

Methoden van TreeSet

Elementen toevoegen

  • add() – voegt het gespecificeerde element toe aan de set
  • addAll() – voegt alle elementen van de gespecificeerde collectie toe
import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> evenGetallen = new TreeSet<>();
        evenGetallen.add(2);
        evenGetallen.add(4);
        evenGetallen.add(6);
        System.out.println("TreeSet: " + evenGetallen);

        TreeSet<Integer> getallen = new TreeSet<>();
        getallen.add(1);
        getallen.addAll(evenGetallen);
        System.out.println("Nieuwe TreeSet: " + getallen);
    }
}

Output

TreeSet: [2, 4, 6]
Nieuwe TreeSet: [1, 2, 4, 6]

Elementen benaderen

Om elementen van een tree set te benaderen, kun je de iterator()-methode gebruiken:

import java.util.TreeSet;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> getallen = new TreeSet<>();
        getallen.add(2);
        getallen.add(5);
        getallen.add(6);
        System.out.println("TreeSet: " + getallen);

        Iterator<Integer> iterator = getallen.iterator();
        System.out.print("TreeSet met Iterator: ");
        while (iterator.hasNext()) {
            System.out.print(iterator.next() + ", ");
        }
    }
}

Output

TreeSet: [2, 5, 6]
TreeSet met Iterator: 2, 5, 6, 

Elementen verwijderen

  • remove() – verwijdert het gespecificeerde element
  • removeAll() – verwijdert alle elementen uit de set
import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> getallen = new TreeSet<>();
        getallen.add(2);
        getallen.add(5);
        getallen.add(6);
        System.out.println("TreeSet: " + getallen);

        boolean waarde1 = getallen.remove(5);
        System.out.println("Is 5 verwijderd? " + waarde1);

        boolean waarde2 = getallen.removeAll(getallen);
        System.out.println("Zijn alle elementen verwijderd? " + waarde2);
    }
}

Output

TreeSet: [2, 5, 6]
Is 5 verwijderd? true
Zijn alle elementen verwijderd? true

Navigatiemethoden

Omdat TreeSet NavigableSet implementeert, biedt het verschillende navigatiemethoden:

1. first() en last()

  • first() – retourneert het eerste element
  • last() – retourneert het laatste element

2. ceiling(), floor(), higher() en lower()

  • higher(element) – Laagste element groter dan het gespecificeerde element
  • lower(element) – Grootste element kleiner dan het gespecificeerde element
  • ceiling(element) – Laagste element groter dan of gelijk aan het element; retourneert het element zelf als het bestaat
  • floor(element) – Grootste element kleiner dan of gelijk aan het element; retourneert het element zelf als het bestaat
import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        TreeSet<Integer> getallen = new TreeSet<>();
        getallen.add(2);
        getallen.add(5);
        getallen.add(4);
        getallen.add(6);
        System.out.println("TreeSet: " + getallen);

        System.out.println("Higher(4): " + getallen.higher(4));
        System.out.println("Lower(4): " + getallen.lower(4));
        System.out.println("Ceiling(4): " + getallen.ceiling(4));
        System.out.println("Floor(3): " + getallen.floor(3));
    }
}

Output

TreeSet: [2, 4, 5, 6]
Higher(4): 5
Lower(4): 2
Ceiling(4): 4
Floor(3): 2

3. pollFirst() en pollLast()

  • pollFirst() – retourneert en verwijdert het eerste element
  • pollLast() – retourneert en verwijdert het laatste element

4. headSet(), tailSet() en subSet()

Deze methoden werken analoog aan NavigableSet met optionele boolean-parameters voor inclusie/exclusie van grenzen.

Set-operaties

TreeSet ondersteunt standaard set-operaties:

Unie van sets

Gebruik addAll() voor de unie.

Intersectie van sets

Gebruik retainAll() voor de intersectie.

Verschil van sets

Gebruik removeAll() voor het verschil.

Subset controleren

Gebruik containsAll() om te controleren of een set een subset is van een andere.

Overige methoden

MethodeBeschrijving
clone()Maakt een kopie van de TreeSet
contains()Zoekt een element en retourneert boolean
isEmpty()Controleert of de TreeSet leeg is
size()Retourneert de grootte van de TreeSet
clear()Maakt de TreeSet leeg

TreeSet vs HashSet

  • TreeSet houdt elementen gesorteerd (implementeert SortedSet)
  • TreeSet biedt navigatiemethoden (implementeert NavigableSet)
  • HashSet is sneller voor basisoperaties (add, remove, contains, size)

TreeSet met Comparator

Je kunt de ordening aanpassen met een eigen Comparator:

import java.util.TreeSet;
import java.util.Comparator;

class Main {
    public static void main(String[] args) {
        TreeSet<String> dieren = new TreeSet<>(new CustomComparator());
        dieren.add("Hond");
        dieren.add("Zebra");
        dieren.add("Kat");
        dieren.add("Paard");
        System.out.println("TreeSet: " + dieren);
    }

    static class CustomComparator implements Comparator<String> {
        @Override
        public int compare(String dier1, String dier2) {
            int waarde = dier1.compareTo(dier2);
            // Omgekeerde volgorde
            if (waarde > 0) return -1;
            else if (waarde < 0) return 1;
            else return 0;
        }
    }
}

Output

TreeSet: [Zebra, Paard, Hond, Kat]

De CustomComparator-klasse implementeert Comparator en overschrijft compare() voor omgekeerde sortering.

Java

  1. Java-operators beheersen: typen, syntax en praktische voorbeelden
  2. Java-commentaar: typen, gebruik en best practices
  3. Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
  4. Java Strings beheersen: aanmaken, methodes en best practices
  5. Java interfaces meesteren: concepten, implementatie en best practices
  6. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  7. Java Try-with-resources meesteren: automatische resource management uitgelegd
  8. Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
  9. Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid
  10. Java Collection-algoritmes: Sorteren, shuffelen en meer
  11. Willekeurige Getallen Genereren in Java: Praktische Gids met Random en Math.random