net.ontopia.utils
Class CompactHashSet<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractSet<E>
          extended by net.ontopia.utils.CompactHashSet<E>
All Implemented Interfaces:
java.lang.Iterable<E>, java.util.Collection<E>, java.util.Set<E>
Direct Known Subclasses:
CompactIdentityHashSet, PoolableSet, SetPool, SynchronizedCompactHashSet, TreeWidget.UniversalSet, UniqueSet

public class CompactHashSet<E>
extends java.util.AbstractSet<E>

INTERNAL: Implements the Set interface more compactly than java.util.HashSet by using a closed hashtable.


Field Summary
protected static java.lang.Object deletedObject
          When an object is deleted this object is put into the hashtable in its place, so that other objects with the same key (collisions) further down the hashtable are not lost after we delete an object in the collision chain.
protected  int elements
           
protected  int freecells
          This is the number of empty (null) cells.
protected static int INITIAL_SIZE
           
protected static double LOAD_FACTOR
           
protected  int modCount
           
protected static java.lang.Object nullObject
          This object is used to represent null, should clients add that to the set.
protected  E[] objects
           
 
Constructor Summary
CompactHashSet()
          Constructs a new, empty set.
CompactHashSet(java.util.Collection<E> c)
          Constructs a new set containing the elements in the specified collection.
CompactHashSet(int size)
          Constructs a new, empty set.
 
Method Summary
 boolean add(java.lang.Object o)
          Adds the specified element to this set if it is not already present.
 void clear()
          Removes all of the elements from this set.
 boolean contains(java.lang.Object o)
          Returns true if this set contains the specified element.
 void dump()
          INTERNAL: Used for debugging only.
 boolean isEmpty()
          Returns true if this set contains no elements.
 java.util.Iterator<E> iterator()
          Returns an iterator over the elements in this set.
protected  void rehash()
          INTERNAL: Figures out correct size for rehashed set, then does the rehash.
protected  void rehash(int newCapacity)
          INTERNAL: Rehashes the hashset to a bigger size.
 boolean remove(java.lang.Object o)
          Removes the specified element from the set.
 int size()
          Returns the number of elements in this set (its cardinality).
 java.lang.Object[] toArray()
           
<T> T[]
toArray(T[] a)
           
 
Methods inherited from class java.util.AbstractSet
equals, hashCode, removeAll
 
Methods inherited from class java.util.AbstractCollection
addAll, containsAll, retainAll, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Set
addAll, containsAll, retainAll
 

Field Detail

INITIAL_SIZE

protected static final int INITIAL_SIZE
See Also:
Constant Field Values

LOAD_FACTOR

protected static final double LOAD_FACTOR
See Also:
Constant Field Values

nullObject

protected static final java.lang.Object nullObject
This object is used to represent null, should clients add that to the set.


deletedObject

protected static final java.lang.Object deletedObject
When an object is deleted this object is put into the hashtable in its place, so that other objects with the same key (collisions) further down the hashtable are not lost after we delete an object in the collision chain.


elements

protected int elements

freecells

protected int freecells
This is the number of empty (null) cells. It's not necessarily the same as objects.length - elements, because some cells may contain deletedObject.


objects

protected E[] objects

modCount

protected int modCount
Constructor Detail

CompactHashSet

public CompactHashSet()
Constructs a new, empty set.


CompactHashSet

public CompactHashSet(int size)
Constructs a new, empty set.


CompactHashSet

public CompactHashSet(java.util.Collection<E> c)
Constructs a new set containing the elements in the specified collection.

Parameters:
c - the collection whose elements are to be placed into this set.
Method Detail

iterator

public java.util.Iterator<E> iterator()
Returns an iterator over the elements in this set. The elements are returned in no particular order.

Specified by:
iterator in interface java.lang.Iterable<E>
Specified by:
iterator in interface java.util.Collection<E>
Specified by:
iterator in interface java.util.Set<E>
Specified by:
iterator in class java.util.AbstractCollection<E>
Returns:
an Iterator over the elements in this set.
See Also:
ConcurrentModificationException

size

public int size()
Returns the number of elements in this set (its cardinality).

Specified by:
size in interface java.util.Collection<E>
Specified by:
size in interface java.util.Set<E>
Specified by:
size in class java.util.AbstractCollection<E>

isEmpty

public boolean isEmpty()
Returns true if this set contains no elements.

Specified by:
isEmpty in interface java.util.Collection<E>
Specified by:
isEmpty in interface java.util.Set<E>
Overrides:
isEmpty in class java.util.AbstractCollection<E>

contains

public boolean contains(java.lang.Object o)
Returns true if this set contains the specified element.

Specified by:
contains in interface java.util.Collection<E>
Specified by:
contains in interface java.util.Set<E>
Overrides:
contains in class java.util.AbstractCollection<E>
Parameters:
o - element whose presence in this set is to be tested.
Returns:
true if this set contains the specified element.

add

public boolean add(java.lang.Object o)
Adds the specified element to this set if it is not already present.

Specified by:
add in interface java.util.Collection<E>
Specified by:
add in interface java.util.Set<E>
Overrides:
add in class java.util.AbstractCollection<E>
Parameters:
o - element to be added to this set.
Returns:
true if the set did not already contain the specified element.

remove

public boolean remove(java.lang.Object o)
Removes the specified element from the set.

Specified by:
remove in interface java.util.Collection<E>
Specified by:
remove in interface java.util.Set<E>
Overrides:
remove in class java.util.AbstractCollection<E>

clear

public void clear()
Removes all of the elements from this set.

Specified by:
clear in interface java.util.Collection<E>
Specified by:
clear in interface java.util.Set<E>
Overrides:
clear in class java.util.AbstractCollection<E>

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface java.util.Collection<E>
Specified by:
toArray in interface java.util.Set<E>
Overrides:
toArray in class java.util.AbstractCollection<E>

toArray

public <T> T[] toArray(T[] a)
Specified by:
toArray in interface java.util.Collection<E>
Specified by:
toArray in interface java.util.Set<E>
Overrides:
toArray in class java.util.AbstractCollection<E>

dump

public void dump()
INTERNAL: Used for debugging only.


rehash

protected void rehash()
INTERNAL: Figures out correct size for rehashed set, then does the rehash.


rehash

protected void rehash(int newCapacity)
INTERNAL: Rehashes the hashset to a bigger size.



Copyright © 2000-2012 Ontopia.