Hi Roman, On Dec 8, 2013, at 10:29 PM, Roman Leventov <leven...@ya.ru> wrote: > Especially getDefault(). Doesn't this violate principle of least > astonishment? Details and proof: > http://stackoverflow.com/questions/20440136/why-doesnt-new-map-methods-generate-entry-accesses-on-linkedhashmap >
Thanks. I believe that all the new (default) Map methods but getOrDefault behave correctly. So i think it is a bug, we need to add something like the following to LinkedHashMap: public V getOrDefault(Object key, V defaultValue) { Node<K,V> e; if ((e = getNode(hash(key), key)) == null) return defaultValue; if (accessOrder) afterNodeAccess(e); return e.value; } and also update the documentation to clarify (via the implementation specification of the default methods it can be inferred what the behaviour is, but that ain't obvious). I have logged this bug: https://bugs.openjdk.java.net/browse/JDK-8029795 Paul.