[External] : Re: ReversibleCollection proposal
Peter Levart
peter.levart at gmail.com
Wed May 12 06:28:07 UTC 2021
On 5/12/21 2:55 AM, Stuart Marks wrote:
> As you point out, add() is kind of like addLast(), except without the
> reordering semantics for LinkedHashSet. And reversed().add() is a
> roundabout way of saying addFirst() -- also without the reordering
> semantics for LinkedHashSet. I think most people's reactions would be
> "Why didn't they just provide addFirst/addLast?" Plus the reordering
> would be missing for LHS.
>
> A second-order issue is performance. I'd expect that implementations
> would want to provide a fast-path for addFirst() that is amenable to
> JIT optimization; this seems harder to achieve with reversed().add().
The allocation of a reversed view instance typically goes away when C2
compiles the method (if the instance isn't cached like in
AbstractMap.keySet/values) so this can be as performant as specialized
addFirst(), but lack of reordering of existent element in LinkedHashSet
is a different problem I haven thought about.
Regards, Peter
More information about the core-libs-dev
mailing list