Hi Neil; This sounds like an excellent suggestion and the changes look good to me. I have created an RFE change request (CR# 7014637) and posted the webrev at cr.openjdk.java.net:
http://cr.openjdk.java.net/~mduigou/7014637/webrev.00/webrev/ Mike On Jan 25 2011, at 06:28 , Neil Richards wrote: > The Javadoc for java.util.Iterator.remove() states that the behaviour > of the method is "unspecified" if the underlying collection has been > modified. > > Ideally, Iterator.remove() would be resilient - which is to say, it > would not modify the underlying collection if the element to be > removed has already been removed from the collection. > > In the general case, I can see the rationale behind the Javadoc > defining things the way they are - it would be overly onerous to > require resilient behaviour on iterators for all types of collection. > > However, in the specific case of the iterators for java.util.EnumSet, > I believe it is simple to implement them such that their remove() > method does behave in the resilient manner described above. > > Given that it's basicaly as easy for these to behave resiliently as > for them not to, I believe to would be beneficial to change them to be > resilient in this fashion. > > To that end, please find attached a zip file containing a webrev which > modifies the Iterators for EnumSet (specifically > java.util.RegularEnumSet.EnumSetIterator and > java.util.JumboEnumSet.EnumSetIterator) so that they are resilient, > together with a couple of testcases to demonstrate the enhancement. > > I have searched the Java Bug Database, but have not found a bug (or > RFE) relating to this item. > Therefore, I'm unsure if I should raise an RFE for it there or in the > OpenJDK bugzilla. > > As always, any comments, queries or guidance on any of the above > gratefully received. > > - Neil