Usually when we add defaults to Collection interfaces, we provide efficient implementations for the several dozen primary JDK implementations.

On 1/8/2019 11:16 AM, some-java-user-99206970363698485...@vodafonemail.de wrote:
Would this method then be useful enough if the default implementation is that 
inefficient (in case
you only want to get a nullable value)?

Brian Goetz <brian.go...@oracle.com> hat am 8. Januar 2019 um 16:57 geschrieben:


Here's a default implementation that returns the actual key:

     default Optional<Map.Entry<K,V>> getEntry(K key) {
         for (Map.Entry<K,V> e : entrySet) {
             if (Objects.equals(key, e.getKey())
                 return Optional.of(e);
         }
         return Optional.empty();
     }

On 1/8/2019 10:50 AM,
some-java-user-99206970363698485...@vodafonemail.de wrote:
Yes it is now possible to implement the methods `getKey(Object key)` and 
`getEntry(Object key)`
requested by JDK-6552529 as default methods, however both would have to include 
that
"The default implementation returns the provided key. Overriding 
implementations may return the
actual key used by the map."
In this case it is questionable how useful the methods actually are, e.g.
    Two key objects k1 and k2 with `k1.equals(k2)`
    Two objects m1 and m2 of different map implementations both containing k1.
    Then the following is possible:
    m1.getKey(k2) == k2 // true
    m2.getKey(k2) == k2 // false

Brian Goetz <brian.go...@oracle.com> hat am 7. Januar 2019 um 00:54 geschrieben:


FYI, the comment about compatibility was obsoleted by the addition of
default methods in Java 8.

Reply via email to