On 05/04/2016 05:25 PM, Stephen Colebourne wrote:
I disagree with altering the iteration order. Guava's ImmutableSet and
ImmutableMap have reliable iteration specified to match creation
order. This aspect of the design is very useful.
Stephen
Are they also O(1) on lookup at the same time?
Altering iteration order from VM run to VM run is a double-edged sword.
I can understand that by doing so, programs written to depend on
iteration order are practically not possible. In the absence of such
"randomization", a simple change of hashCode algorithm of some element
of the collection (could be a user class) could break the program. But
as Alan pointed out it is also harder to reproduce problems that way.
OTOH one might argue that randomization actually prevents such problems
to appear in the first place. It forces the programs to be written in a
way so that they don't depend on any particular iteration order as it
uncovers any potential problems dependent on iteration order early in
the development phase.
Regards, Peter