Ich möchte sehr gerne Map.computeIfAbsent verwenden, aber es ist zu lange seit Lambdas in undergrad gewesen.Wie verwende ich die neue Funktion computeIfAbsent?
Fast direkt aus der Dokumentation: Es gibt ein Beispiel für die alte Art und Weise, Dinge zu tun:
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);
}
und die neue Art und Weise:
map.computeIfAbsent(key, k -> new Value(f(k)));
Aber in ihrem Beispiel, ich glaube, Ich verstehe es nicht ganz. Wie würde ich den Code umwandeln, um den neuen Lambda-Ausdruck zu verwenden?
Ich bin nicht sicher, was Sie aus dem Beispiel dort nicht verstehen? –
Was ist "k"? Wird eine Variable definiert? Wie wäre es mit "new Value" - ist das etwas aus Java 8, oder ein Objekt, das ich definieren oder überschreiben muss? whoLetDogsOut.ComputeIfAbsent (Schlüssel, k -> new Boolean (tryToLetOut (k))) kompiliert nicht, so fehlt mir etwas ... –
Was genau kompiliert nicht? Welchen Fehler erzeugt es? – axtavt