Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7014637

Improve behavior of EnumSet Iterator.remove()

XMLWordPrintable

    • b136
    • generic
    • generic
    • Verified

      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

            mduigou Mike Duigou
            mduigou Mike Duigou
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: