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

Improve behavior of EnumSet Iterator.remove()

    Details

    • Subcomponent:
    • Introduced In Version:
    • Resolved In Build:
      b136
    • CPU:
      generic
    • OS:
      generic
    • Verification:
      Verified

      Description

      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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: