I guess both behaviors can make sense, depending on the application. Implementation-wise, the current
put is the more atomic operation, since reinserting requires extra work.
I know this behavior was chosen intentionally by the Java counterpart to
LinkedHashMap (https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html), which is at least better documented:
This implementation differs from HashMap in that it maintains a doubly-linked list running through all of its entries. This linked list defines the iteration ordering, which is normally the order in which keys were inserted into the map (insertion-order). Note that insertion order is not affected if a key is re-inserted into the map. (A key k is reinserted into a map m if m.put(k, v) is invoked when m.containsKey(k) would return true immediately prior to the invocation.)
But yes, a utility method could probably be added—not before 2.13 though, because of compatibility policies. Or you can add it yourself via an “extension method” now.