Ich habe gerade kürzlich eine Version von putIfAbsent (...) in java.util.Map gefunden, die Sie mit einer Art Factory-Methode versehen können, um ein Objekt zu instanziieren, wenn es nicht bereits vorhanden ist. Dies würde viel Code vereinfachen.Warum hat Java keine putIfAbsent-Methode (Schlüssel, Lieferant) in Map?
Hier ist meine modifizierte Schnittstelle:
import java.util.Map;
import java.util.function.Supplier;
/**
* Extension of the Map Interface for a different approach on having putIfAbsent
*
* @author Martin Braun
*/
public interface SupplierMap<K, V> extends Map<K, V> {
public default V putIfAbsent(K key, Supplier<V> supplier) {
V value = this.get(key);
if(value == null) {
this.put(key, value = supplier.get());
}
return value;
}
}
Nun meine Frage: Gibt es eine andere (einfacher) Weg, dies zu tun, oder habe ich übersehen nur etwas in der Java-API?
FWIW, ['Map # putIfAbsent'] (http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#putIfAbsent-K-V-) wurde mit Java8 hinzugefügt. – fxm
in Java 1.8 gibt es V PutIfAbsent (K-Schlüssel, V-Wert) –
Ich weiß, aber es ermöglicht nur, ein Objekt anstelle einer Anbieter-Methode bereitzustellen. –