[JAVA] Ideal und Realität, die ich fühlte, als ich Optional zum ersten Mal verwendete ~ Implementierung des Caches mit Map ~

Überblick

Behalten Sie den Wert in Map Wenn es in Map bereits einen Wert gibt, ist es die Geschichte, als ich ihn implementiert habe, um diesen zu verwenden.

diese Zeit, Map # put () gibt den Put-Wert nicht so zurück, wie er ist. Ich konnte es nicht so schreiben, wie ich es erwartet hatte, das heißt, es ist eine Beschwerde: weinen: (Siehe insbesondere den Quellcode: Bleistift :)

※vielleicht, Es kann eine kluge Lösung geben und Vielleicht ist es nur ein Missverständnis: Denken:

Quellcode

Main.java


import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Ideal (ich möchte so schreiben)
        String idealKey = "idealKey";
        Map<String, String> idealMap = new HashMap<String, String>();
        String idealValue = Optional.ofNullable(
	        idealMap.get(idealKey)
        ).orElseGet(
            //put gibt null zurück ...
            () -> idealMap.put(idealKey, "idealValue")
        );
        System.out.println("get:" + idealValue);

        //Realität (am Ende habe ich das geschrieben)
        String realKey = "realKey";
        Map<String, String> realMap = new HashMap<String, String>();
        String realStr = Optional.ofNullable(
	        realMap.get(realKey)
        ).orElseGet(() -> {
            String value = "realValue";
	        realMap.put(realKey, value);
        	return value;
        });
        System.out.println("get:" + realStr);
    }
}

Ausführungsergebnis

get:null
get:realValue

Recommended Posts

Ideal und Realität, die ich fühlte, als ich Optional zum ersten Mal verwendete ~ Implementierung des Caches mit Map ~
[Rails] Ich habe zum ersten Mal versucht, die button_to-Methode zu verwenden
Die Geschichte, absichtlich zum ersten Mal in meinem Leben Try Catch zu verwenden
Eindrücke und Zweifel an der erstmaligen Verwendung von Java in Android Studio
Ich habe zum ersten Mal versucht, Docker zu berühren
Zum ersten Mal lernen Java # 3 Ausdrücke und Operatoren
Lernnotiz beim ersten Lernen von Java (persönliches Lernnotiz)
Zusammenfassung der Punkte, die Java-Programmierer beim ersten Lesen der Kotlin-Quelle als rutschig empfinden
Kennen Sie jetzt die Bequemlichkeit von Docker (-compose) (Informationsliste, auf die ich bei der Verwendung verwiesen habe)
Ich werde die Verschachtelung von Aussagen erklären, die Anfänger töten
Denken Sie daran, wenn Rails (Turbolinks) die Seite nicht zum ersten Mal lädt
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Ich habe versucht, die Cache-Funktion des Application Container Cloud Service zu verwenden
So erhalten Sie den Inhalt von Map mithilfe des for-Anweisungsmemorandums
Lock_version kann für Tabellen verwendet werden, die dazu neigen, gleichzeitig auf denselben Datensatz zuzugreifen und ihn zu bearbeiten
[Ruby on Rails] Beim ersten Anmelden ・ So teilen Sie den Bildschirm mit jQuery in zwei Hälften