Holen Sie sich null-sichere Map-Werte in Java

Zweck dieses Artikels

Es ist eine Null-Zeiger-Ausnahme, die mit Java geliefert wird, aber ich wollte den Wert so sicher wie möglich erhalten, also habe ich diesmal die Methode ausprobiert, den Wert von Map abzurufen.

Zu überprüfende Karte

Map<String, Boolean> map = new HashMap<String, Boolean>() {
  {
    put("true_label", true);
    put("false_label", false);
    put("null_label", null);
  }
};

Map # normal bekommen

assertTrue(map.get("true_label"));
assertFalse(map.get("false_label"));

assertNull(map.get("null_label"));
assertNull(map.get("invalid_label")); //Schlüssel, die in Map nicht vorhanden sind

Java 8 Map # getOrDefault

Sie können einen alternativen Wert erhalten, wenn Sie den Schlüssel nicht haben.

assertTrue(map.getOrDefault("true_label", false));
assertFalse(map.getOrDefault("false_label", false));
assertFalse(map.getOrDefault("invalid_label", false)); //Sie können einen alternativen Wert erhalten, wenn Sie den Schlüssel nicht haben.

assertNull(map.getOrDefault("null_label", false)); //Leider wird es nicht falsch!!

Java 8 Optional # ofNullable

assertTrue(Optional.ofNullable(map.get("true_label")).orElse(false));
assertFalse(Optional.ofNullable(map.get("false_label")).orElse(false));
assertFalse(Optional.ofNullable(map.get("null_label")).orElse(false)); //Alternativer Wert false
assertFalse(Optional.ofNullable(map.get("invalid_label")).orElse(false)); //Alternativer Wert false

ObjectUtils # defaultIfNull in Apache.commons.lang3

Optional kann in Ordnung sein, aber nur für den Fall

assertTrue(ObjectUtils.defaultIfNull(map.get("true_label"), false));
assertFalse(ObjectUtils.defaultIfNull(map.get("false_label"), false));
assertFalse(ObjectUtils.defaultIfNull(map.get("null_label"), false)); //Alternativer Wert false
assertFalse(ObjectUtils.defaultIfNull(map.get("invalid_label"), false)); //Alternativer Wert false

Recommended Posts

Holen Sie sich null-sichere Map-Werte in Java
Holen Sie sich EXIF-Informationen in Java
Nullsicheres Programm in Java (Eclipse)
[Java] KClass in Java herunterladen [Kotlin]
Sortieren Sie die Map-Werte in aufsteigender Schlüsselreihenfolge in Java TreeMap
Verwenden Sie zusammengesetzte Schlüssel in Java Maps.
JAVA (Karte)
Ruft Attribute und Werte aus einer XML-Datei in Java ab
Bleiben Sie in einem Java Primer stecken
[Java] Listen- / Kartenelemente mit Iterator abrufen
Doppelte Karte sortiert nach Schlüssel in Java
Map ohne Verwendung eines Arrays in Java
Schlüssel vom Wert in Java Map umkehren
So erhalten Sie das Datum mit Java
Abrufen des Verlaufs vom Zabbix-Server in Java
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
Partisierung in Java
Änderungen in Java 11
Janken in Java
[Java] Kartenvergleich
Umfangsrate in Java
FizzBuzz in Java
So erhalten Sie eine Klasse von Element in Java
Ordnen Sie GET-Anforderungen im Frühjahr komplexen Objekten zu.
Holen Sie sich Unixtime (Sekunden) von ZonedDateTime in Scala / Java
Bibliothek "OSHI" zum Erfassen von Systeminformationen mit Java
[Java] Ruft mehrere Werte von einem Rückgabewert ab
[Java] KFunction von Method / Constructor in Java abrufen [Kotlin]
Kommen Sie mit Java-Containern in Cloud Run zurecht
Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
[Java] Verschiedene Daten abrufen
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Azure funktioniert in Java
Formatieren Sie XML in Java
Quelle zum Abrufen der Umleitungsquell-URL in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Abrufen von Gebietsschemaobjekten für alle in Java verfügbaren Gebietsschemas
Verwenden Sie OpenCV mit Java
Enum Reverse Map Java
WebApi-Memorandum mit Java
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Typbestimmung in Java
Befehle in Java ausführen (Ping)
[Java] Initialisierung, Hinzufügung, Erfassung
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
Bidirektionale Java-Kartenbibliothek