The methods currently provided by the Map interface (https://docs.oracle.com/javase/8/docs/api/java/util/Map.html) do not provide an efficient way to look up nullable values. This problem would be solved if JDK-6552529 was implemented, but that will likely not be happening since the interface cannot be changed without breaking compatibility.
Ways to currently look up nullable values are: * Combined ussage of `get()` and `containsKey()` -> inefficient * Usage of `getOrDefault()` with private no-value constant, e.g.: private static final Object NO_VALUE = new Object(); // ... V value = map.getOrDefault(key, (V) NO_VALUE); if (value == NO_VALUE) { // No value } else { // Value exists } Both solutions are not really that great, therefore it would be good to provide an easier and (if overridden) more efficient method: default OptionalNullable<V> getOptional(Object key) { V value = get(key); if (value != null || containsKey(key)) { return OptionalNullable.of(value); } else { return OptionalNullable.empty(); } } Where `OptionalNullable` is a new class similar to `Optional` except that null is considered a value. Maybe a `void ifExists(K key, Consumer<V> consumer)`, which makes the consumer consume the value if it exists (= nullable), would be good as well to avoid creation of `OptionalNullable` objects, though that method might (at least for performance reasons) become obsolute when `OptionalNullable` becomes a value type.