• New Feature
  • Status: Closed
  • 2 Major
  • Resolution: Fixed
  • mgovinda
  • Reporter: ssubbiah
  • June 05, 2007
  • 0
  • Watchers: 0
  • April 10, 2009
  • June 25, 2008


ObjectIDSet2 is a class that optimizes ObjectID storage for better memory uagage and keeping the access times comparable with HashSet.

The iterator returned by ObjectIDSet2 does not support remove(). It was not implemented due to lack of time and also due to the fact that it is a little tricky.

We need to implement this to really make the rest of the system unaware of the internal set implementation details.


Manoj Govindassamy 2008-03-31

working on this.

Manoj Govindassamy 2008-06-25

  • ObjectIDSet is actually backed by AATreeSet. The objects inserted in AATreeSet are of type Range (start, end)
  • AATreeSet balances automatically on inserts and deletes. So, After getting an interator, and doing a remove may rebalance the treee and the previous iterator be no more valid.
  • So, a TailSetIerator [similar to TailSet(FromElement) in TreeSet] for AATreeSet is implemented
  • ObjectIDSetIterator can make use of underlying AATreeSetIterator.tailSetIterator to get the new iterator view after remove

fix and tests are checked-in to trunk r8924

Saravanan Subbiah 2009-04-07

Support added and tests in place.