Making java.util.Iterator.remove() for the iterators for EnumSet more resilient (original) (raw)
Mike Duigou mike.duigou at oracle.com
Tue Jan 25 19:24:32 UTC 2011
- Previous message: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient
- Next message: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient
- Next message: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]