[JAVA] Idéal et réalité que j'ai ressenti lorsque j'ai utilisé Optional pour la première fois ~ Implémentation du cache à l'aide de Map ~

Aperçu

Conservez la valeur dans Map S'il y a déjà une valeur dans Map, c'est l'histoire quand je l'ai implémentée pour l'utiliser.

ce temps, Map # put () ne renvoie pas la valeur put telle quelle, Je n'ai pas pu l'écrire comme je m'y attendais, c'est-à-dire que c'est une plainte: pleure (Plus précisément, reportez-vous au code source: crayon :)

※ peut-être, Il peut y avoir une solution intelligente et C'est peut-être juste un malentendu: penser:

Code source

Main.java


import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Idéal (je veux écrire comme ça)
        String idealKey = "idealKey";
        Map<String, String> idealMap = new HashMap<String, String>();
        String idealValue = Optional.ofNullable(
	        idealMap.get(idealKey)
        ).orElseGet(
            //put retourne null ...
            () -> idealMap.put(idealKey, "idealValue")
        );
        System.out.println("get:" + idealValue);

        //Réalité (j'ai fini par écrire ça)
        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);
    }
}

Résultat d'exécution

get:null
get:realValue

Recommended Posts

Idéal et réalité que j'ai ressenti lorsque j'ai utilisé Optional pour la première fois ~ Implémentation du cache à l'aide de Map ~
[Rails] J'ai essayé d'utiliser la méthode button_to pour la première fois
L'histoire de l'utilisation intentionnelle de Try catch pour la première fois de ma vie
Impressions et doutes sur l'utilisation de Java pour la première fois dans Android Studio
J'ai essayé de toucher Docker pour la première fois
Apprentissage pour la première fois des expressions et opérateurs Java # 3
Mémo d'apprentissage lors de l'apprentissage de Java pour la première fois (mémo d'apprentissage personnel)
Résumé des points que les programmeurs Java trouvent glissants lorsqu'ils lisent la source Kotlin pour la première fois
Connaître la commodité de Docker (-compose) maintenant (liste d'informations auxquelles j'ai fait référence lors de son utilisation)
Je vais expliquer l'imbrication des déclarations qui tuent les débutants
Réfléchissez lorsque Rails (turbolinks) ne charge pas la page pour la première fois
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
J'ai essayé d'utiliser la fonction de cache d'Application Container Cloud Service
Comment obtenir le contenu de la carte à l'aide du mémorandum d'instructions
Lock_version peut être utilisé pour les tables qui ont tendance à accéder et à modifier le même enregistrement en même temps
[Ruby on Rails] Lors de la première connexion ・ Comment diviser l'écran en deux à l'aide de jQuery