Java >> Java Tutorial >  >> Java

Java 6 – NavigableMap-Schnittstelle

In diesem Artikel besprechen wir NavigableMap Schnittstelle mit all seinen wichtigen Methoden

1. Wichtige Punkte zu NavigableMap:

  • NavigableMap erlaubt keine doppelten Schlüssel
  • Speichert Schlüssel-Wert-Paare basierend auf einer Sortierreihenfolge
  • Die Sortierreihenfolge kann entweder natürliche Reihenfolge sein oder kundenspezifische Bestellung
  • Bietet nützliche Methoden für Navigationszwecke
  • TreeMap-Klasse ist Implementierung von NavigableMap

2. NavigableMap-Schnittstelle:

  • NavigableMap-Schnittstelle ist eine Unterschnittstelle der SortedMap-Schnittstelle (d. h. NavigableMap erweitert SortedMap)
  • Um eine Gruppe zu repräsentieren von Schlüsselwertpaaren als eine einzelne Einheit/Einheit , wobei duplizierte Schlüssel nicht erlaubt sind und Schlüssel werden nach einer Sortierung gespeichert
  • Erlaubt nur eindeutige Schlüssel einzufügen
  • Speichert Schlüssel-Wert-Paare in Sortierreihenfolge auf Basis von Schlüsseln nur, keine Werte
  • Navigierbare Karte interface definiert spezifischere Methoden für Navigationszwecke , zusätzlich zu geerbten Methoden von Map/SortedMap Schnittstellen
  • Dies wurde in Java 1.6 eingeführt Version für Navigationsunterstützung zur TreeMap-Klasse
  • Vorhanden in java.util Paket und erweitert java.util.SortedMap Schnittstelle

Quelle: Team BenchResources.Net

3. NavigableMap-Schnittstellenmethode:

NavigableMap-Methoden Beschreibung
K floorKey(K key); gibt größtes/höchstes Element zurück was kleiner oder gleich dem angegebenen Schlüssel ist
Null wenn es keinen solchen Schlüssel gibt
K LowerKey(K-Taste); gibt größtes/höchstes Element zurück was kleiner als der angegebene Schlüssel ist

Null wenn es keinen solchen Schlüssel gibt

K ceilingKey(K key); gibt das kleinste/niedrigste Element zurück was größer als oder gleich dem angegebenen Schlüssel ist
Null wenn es keinen solchen Schlüssel gibt
KhigherKey(K-Taste); gibt das kleinste/niedrigste Element zurück was größer als der angegebene Schlüssel ist

Null wenn es keinen solchen Schlüssel gibt

Map.Entry pollFirstEntry(); entfernen und ersten abrufen Eintrag (d.h. 1 st Schlüssel-Wert-Paar)

Null wenn die aufrufende Karte leer ist
Map.Entry pollLastEntry(); den letzten Eintrag entfernen und abrufen (d. h. letztes Schlüsselwertpaar)

Null wenn die aufrufende Karte leer ist
NavigierbareKarte descendingMap(); gibt den Aufruf von map in umgekehrter Reihenfolge zurück

4. Beispiel zum Verständnis von NavigableMap-spezifischen Methoden

  • Navigierbare Karte =[10-Alpha, 20-Beta, 30-Gamma, 40-Delta, 50-Epsilon, 60-Lambda, 70-mu];
  • floorKey(30) =30-Gamma
  • lowerKey(30) =20-Beta
  • CeilingKey(40) =40-Delta
  • higherKey(40) =50 Epsilon
  • pollFirstEntry() =10-Alpha
  • pollLastEntry() =70-mu
  • descendingMap() =[70-mu, 60-lambda, 50-epsilon, 40-delta, 30-Gamma, 20-Beta, 10-Alpha];

5. NavigableMap-Beispiel

NavigableMapMethods.java

package in.bench.resources.java.collection;

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

public class NavigableMapMethods {

	public static void main(String[] args) {

		// creating NavigableMap reference and TreeMap object
		NavigableMap<Integer, String> nm = new TreeMap<Integer, String>();

		// adding key-value pairs to SortedMap/TreeMap object
		nm.put(3, "Yahoo");
		nm.put(4, "Amazon");
		nm.put(7, "Twiter");
		nm.put(1, "Google");
		nm.put(5, "Reddit");
		nm.put(6, "LinkedIn");
		nm.put(2, "Facebook");

		// printing according to natural ordering
		System.out.println("Elements will be Sorted"
				+ " acc to Natural ordering:\n");
		System.out.println(nm);

		// floorKey and lowerKey methods
		System.out.println("\nfloorKey(3)  : " + nm.floorKey(3));
		System.out.println("\nlowerKey(3)  : " + nm.lowerKey(3));

		// ceilingKey and higherKey methods
		System.out.println("\nceilingKey(4)  : " + nm.ceilingKey(4));
		System.out.println("\nhigherKey(5)  : " + nm.higherKey(5));

		// pollFirstEntry method
		System.out.println("\npollFirstEntry() : " + nm.pollFirstEntry());
		System.out.println("NavigableMap after polling First Entry : "
				+ nm);

		// pollLastEntry method
		System.out.println("\npollLastEntry() : " + nm.pollLastEntry());
		System.out.println("NavigableMap after polling Last Entry : "
				+ nm);

		// descendingMap in descending or reverse order
		System.out.println("\nNavigableMap in descending order : "
				+ nm.descendingMap());
	}
}

Ausgabe:

Elements will be Sorted acc to Natural ordering:

{1=Google, 2=Facebook, 3=Yahoo, 4=Amazon, 5=Reddit, 6=LinkedIn, 7=Twiter}

floorKey(3)  : 3

lowerKey(3)  : 2

ceilingKey(4)  : 4

higherKey(5)  : 6

pollFirstEntry() : 1=Google
NavigableMap after polling First Entry : {2=Facebook, 3=Yahoo, 4=Amazon,
5=Reddit, 6=LinkedIn, 7=Twiter}

pollLastEntry() : 7=Twiter
NavigableMap after polling Last Entry : {2=Facebook, 3=Yahoo, 4=Amazon,
5=Reddit, 6=LinkedIn}

NavigableMap in descending order : {6=LinkedIn, 5=Reddit, 4=Amazon,
3=Yahoo, 2=Facebook}

Hinweis: Alle Methoden von NavigableMap sind nicht synchronisiert

F) Wie wird die navigierbare Karte synchronisiert?

  • Es kann einfach in eine synchronisierte NavigableMap konvertiert werden
  • Using-Utility-Methode synchronizedMap(nm); von java.util.Collections Klasse
  • Lesen Sie Java – Wie bekomme ich eine synchronisierte Version von Map? für weitere Details mit Beispiel
Map map= Collections.synchronizedMap(nm);

6. Klasse, die die NavigableMap-Schnittstelle implementiert

  • TreeMap implementiert die NavigableMap-Schnittstelle

7. Zu berücksichtigende Faktoren bei der Diskussion einer Sammlungsklasse

Wir sollten die folgenden Faktoren berücksichtigen, wenn wir eine Implementierungsklasse eines Sammlungsframeworks oder in diesem Fall eine Map-Schnittstelle diskutieren,

  • Zugrundliegende Datenstruktur
  • Duplikate sind erlaubt oder nicht
  • Anzeigenreihenfolge wird beibehalten oder nicht
  • Ob NULL-Einfügung möglich ist oder nicht
  • Wenn möglich, wie viele NULL-Werte können eingefügt werden
  • Ob die Sammlungsklasse standardmäßig eine Sortierung bereitstellt
  • Gibt es eine Möglichkeit, eine benutzerdefinierte Sortierung anzuwenden
  • Leistung beim Abrufen oder Manipulieren (Hinzufügen/Löschen)
  • Standardmäßig sind alle Methoden synchronisiert oder nicht


Java-Tag