Je veux vraiment utiliser Map.computeIfAbsent, mais il a été trop longtemps depuis lambdas en premier cycle.Comment utiliser la nouvelle fonction computeIfAbsent?
Presque directement à partir de la documentation: il donne un exemple de l'ancienne façon de faire les choses:
Map<String, Boolean> whoLetDogsOut = new ConcurrentHashMap<>();
String key = "snoop";
if (whoLetDogsOut.get(key) == null) {
Boolean isLetOut = tryToLetOut(key);
if (isLetOut != null)
map.putIfAbsent(key, isLetOut);
}
Et la nouvelle façon:
map.computeIfAbsent(key, k -> new Value(f(k)));
Mais dans leur exemple, je pense Je ne comprends pas très bien. Comment pourrais-je transformer le code pour utiliser la nouvelle façon de lambda d'exprimer cela?
Je ne sais pas ce que vous ne comprenez pas l'exemple là-bas? –
Qu'est-ce que "k"? Est-ce une variable en cours de définition? Que diriez-vous de "nouvelle valeur" - est-ce quelque chose de java 8, ou représentant un objet que je dois définir ou remplacer? whoLetDogsOut.computeIfAbsent (clé, k -> new Boolean (tryToLetOut (k))) ne compile pas, donc il me manque quelque chose ... –
Qu'est-ce qui ne compile pas exactement? Quelle erreur produit-elle? – axtavt