Jaka jest różnica między metodami headMap(), tailMap() i subMap() w NavigableMap w Java?

NavigableMap w Java to interfejs rozszerzający SortedMap, który zapewnia dodatkowe metody do przeszukiwania i manipulacji mapami, które są posortowane według kluczy. W tym artykule omówimy różnice pomiędzy trzema metodami tego interfejsu: headMap(), tailMap() i subMap(). Te metody umożliwiają wyodrębnienie części mapy na podstawie kluczy i są niezwykle użyteczne w programowaniu, gdzie potrzebujemy operować na wybranych fragmentach danych.

Przykład zastosowania metod: headMap(), tailMap(), subMap()

Zacznijmy od przykładowego kodu, który pokaże jak te metody działają na praktycznym przykładzie.

import java.util.TreeMap;
import java.util.NavigableMap;

public class MapMethodsExample {
    public static void main(String[] args) {
        // Tworzenie i inicjalizacja NavigableMap
        NavigableMap<Integer, String> map = new TreeMap<>();
        map.put(1, "Jeden");
        map.put(2, "Dwa");
        map.put(3, "Trzy");
        map.put(4, "Cztery");
        map.put(5, "Pięć");

        // Użycie metody headMap() do pobrania kluczy mniejszych od 3
        NavigableMap<Integer, String> headMap = map.headMap(3, false);
        System.out.println("headMap: " + headMap);

        // Użycie metody tailMap() do pobrania kluczy większych lub równych 3
        NavigableMap<Integer, String> tailMap = map.tailMap(3, true);
        System.out.println("tailMap: " + tailMap);

        // Użycie metody subMap() do pobrania kluczy od 2 do 4 (włącznie z 2 i bez 4)
        NavigableMap<Integer, String> subMap = map.subMap(2, true, 4, false);
        System.out.println("subMap: " + subMap);
    }
}

Komentarze w kodzie wyjaśniają działanie poszczególnych metod:

  • headMap(k, boolean) zwraca widok mapy zawierający klucze mniejsze od k. Jeśli drugi argument jest true, k jest włączane do wyniku.
  • tailMap(k, boolean) zwraca widok mapy zawierający klucze większe lub równe k. Drugi argument decyduje, czy k ma być włączony.
  • subMap(k1, boolean1, k2, boolean2) zwraca widok mapy od klucza k1 do k2. Argumenty boolean1 i boolean2 decydują o tym, czy odpowiednie granice są włączane do wyniku.

Podsumowanie

Metody headMap(), tailMap() i subMap() w interfejsie NavigableMap pozwalają na wydajne przeszukiwanie i manipulację posortowanymi mapami w Java. Każda z tych metod oferuje inny sposób wybierania fragmentów mapy, co jest szczególnie przydatne w aplikacjach, które wymagają częstego dostępu do posortowanych danych. Przykład pokazuje, jak łatwo można wyodrębnić różne części mapy, używając tych metod.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top