interface AnyMap<K,V> { // ...
    Optional<V> at(K key);
    V at(K key, V defaultValue);
}

An alternative to at(key, defaultValue) is tryAt(K, Consumer<V>) -- though the name tryAt is awful. (I was considering map() and tryMap() as the new names for get().)

Just to put it on the record, Optional-bearing at() has a problem when the map can have null values -- but given that there are alternatives (default version, consumer version, legacy get()) in the cases where this might happen, I don't see this as a showstopper.

For Queue, there's no good reason for having an Optional-returning
method in addition to added default-returning version, so:

Why not? Optional offers a lot of flexibility, since you have many options for what to do with the possibly-nonexistent value (orElse, orElseThrow, map, flatMap, ifPresent.) Seems a natural building block, and a sharper tool than poll(defaultValue).

Reply via email to