Package net.ontopia.utils
Class CompactHashSet<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- net.ontopia.utils.CompactHashSet<E>
-
- All Implemented Interfaces:
Iterable<E>,Collection<E>,Set<E>
- Direct Known Subclasses:
CompactIdentityHashSet,SynchronizedCompactHashSet,TreeWidget.UniversalSet,UniqueSet
public class CompactHashSet<E> extends AbstractSet<E>
INTERNAL: Implements the Set interface more compactly than java.util.HashSet by using a closed hashtable.
-
-
Field Summary
Fields Modifier and Type Field Description protected static ObjectdeletedObjectWhen 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 intelementsprotected intfreecellsThis is the number of empty (null) cells.protected static intINITIAL_SIZEprotected static doubleLOAD_FACTORprotected intmodCountprotected static ObjectnullObjectThis object is used to represent null, should clients add that to the set.protected E[]objects
-
Constructor Summary
Constructors Constructor Description CompactHashSet()Constructs a new, empty set.CompactHashSet(int size)Constructs a new, empty set.CompactHashSet(Collection<E> c)Constructs a new set containing the elements in the specified collection.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanadd(Object o)Adds the specified element to this set if it is not already present.voidclear()Removes all of the elements from this set.booleancontains(Object o)Returns true if this set contains the specified element.voiddump()INTERNAL: Used for debugging only.booleanisEmpty()Returns true if this set contains no elements.Iterator<E>iterator()Returns an iterator over the elements in this set.protected voidrehash()INTERNAL: Figures out correct size for rehashed set, then does the rehash.protected voidrehash(int newCapacity)INTERNAL: Rehashes the hashset to a bigger size.booleanremove(Object o)Removes the specified element from the set.intsize()Returns the number of elements in this set (its cardinality).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.Collection
parallelStream, removeIf, stream, toArray
-
Methods inherited from interface java.util.Set
addAll, containsAll, retainAll, spliterator
-
-
-
-
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 Object nullObject
This object is used to represent null, should clients add that to the set.
-
deletedObject
protected static final 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(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 Iterator<E> iterator()
Returns an iterator over the elements in this set. The elements are returned in no particular order.- Specified by:
iteratorin interfaceCollection<E>- Specified by:
iteratorin interfaceIterable<E>- Specified by:
iteratorin interfaceSet<E>- Specified by:
iteratorin classAbstractCollection<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:
sizein interfaceCollection<E>- Specified by:
sizein interfaceSet<E>- Specified by:
sizein classAbstractCollection<E>
-
isEmpty
public boolean isEmpty()
Returns true if this set contains no elements.- Specified by:
isEmptyin interfaceCollection<E>- Specified by:
isEmptyin interfaceSet<E>- Overrides:
isEmptyin classAbstractCollection<E>
-
contains
public boolean contains(Object o)
Returns true if this set contains the specified element.- Specified by:
containsin interfaceCollection<E>- Specified by:
containsin interfaceSet<E>- Overrides:
containsin classAbstractCollection<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(Object o)
Adds the specified element to this set if it is not already present.- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceSet<E>- Overrides:
addin classAbstractCollection<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(Object o)
Removes the specified element from the set.- Specified by:
removein interfaceCollection<E>- Specified by:
removein interfaceSet<E>- Overrides:
removein classAbstractCollection<E>
-
clear
public void clear()
Removes all of the elements from this set.- Specified by:
clearin interfaceCollection<E>- Specified by:
clearin interfaceSet<E>- Overrides:
clearin classAbstractCollection<E>
-
toArray
public Object[] toArray()
- Specified by:
toArrayin interfaceCollection<E>- Specified by:
toArrayin interfaceSet<E>- Overrides:
toArrayin classAbstractCollection<E>
-
toArray
public <T> T[] toArray(T[] a)
- Specified by:
toArrayin interfaceCollection<E>- Specified by:
toArrayin interfaceSet<E>- Overrides:
toArrayin classAbstractCollection<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.
-
-