Package org.apache.uima.internal.util
Class IntHashSet
- java.lang.Object
-
- org.apache.uima.internal.util.IntHashSet
-
- All Implemented Interfaces:
PositiveIntSet
public class IntHashSet extends java.lang.Object implements PositiveIntSet
A set of non-zero ints. 0 reserved internally to indicate "not in the map"; you will get an exception if you try to store 0 as a value. 0 will be returned if the value is missing from the map. allowed range is Integer.MIN_VALUE + 1 to Integer.MAX_VALUE 0 is the value for an empty cell Integer.MIN_VALUE is the value for a deleted (removed) value based on Int2IntHashMap This impl is for use in a single thread case only Supports shrinking (reallocating the big table) Supports representing ints as "short" 2byte values if possible, together with an offset amount. Because of the offset, the adjusted key could be == to the offset, so we subtract 1 from it to preserve 0 value as being the null / empty. For short values, the range is: Short.MIN_VALUE+2 to Short.MAX_VALUE after Offset, with the "0" value moved down by 1 and the Short.MIN_VALUE used for deleted (removed) items Automatically switches to full int representation if needed
-
-
Field Summary
Fields Modifier and Type Field Description static floatDEFAULT_LOAD_FACTORstatic intSIZE_NEEDING_4_BYTES
-
Constructor Summary
Constructors Constructor Description IntHashSet()IntHashSet(int initialCapacity)IntHashSet(int initialCapacity, int offset)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanadd(int rawKey)voidbulkAddTo(IntVector v)add all elements in this set to the IntVector v as a bulk operationvoidclear()remove all members of the setbooleancontains(int rawKey)intfind(int rawKey)intget(int index)For iterator use, position is a magic number returned by the internal find For short keys, the value stored for adjKey == 0 is -1, adjKey == -1 is -2, etc.intgetMostNegative()intgetMostPositive()static intgetSpaceOverheadInWords()intgetSpaceUsedInWords()booleanisValid(int position)For FSBagIndex low level iterator useIntListIteratoriterator()intmoveToFirst()For FSBagIndex low level iterator useintmoveToLast()For FSBagIndex low level iterator useintmoveToNext(int position)For FSBagIndex low level iterator useintmoveToPrevious(int position)For FSBagIndex low level iterator usebooleanremove(int rawKey)mostPositive and mostNegative are not updated for removes.voidshowHistogram()intsize()inttableSpace(int numberOfElements)The number of 32 bit words that are reserved when creating a table to hold the specified number of elements The number is a power of 2.static inttableSpace(int numberOfElements, java.lang.Float factor)int[]toIntArray()java.lang.StringtoString()booleanwontExpand()booleanwontExpand(int n)
-
-
-
Field Detail
-
SIZE_NEEDING_4_BYTES
public static final int SIZE_NEEDING_4_BYTES
- See Also:
- Constant Field Values
-
DEFAULT_LOAD_FACTOR
public static final float DEFAULT_LOAD_FACTOR
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
IntHashSet
public IntHashSet()
-
IntHashSet
public IntHashSet(int initialCapacity)
-
IntHashSet
public IntHashSet(int initialCapacity, int offset)- Parameters:
initialCapacity- - you can add this many before expansionoffset- - for values in the short range, the amount to subtract before storing. If == MIN_VALUE, then force 4 byte ints
-
-
Method Detail
-
tableSpace
public int tableSpace(int numberOfElements)
The number of 32 bit words that are reserved when creating a table to hold the specified number of elements The number is a power of 2. The number is at least 16. The number is such that you could add this many elements without triggering the capacity expansion.- Parameters:
numberOfElements- -- Returns:
- -
-
tableSpace
public static int tableSpace(int numberOfElements, java.lang.Float factor)- Parameters:
numberOfElements- -factor- -- Returns:
- capacity of the main table (either 2 byte or 4 byte entries)
-
wontExpand
public boolean wontExpand()
-
wontExpand
public boolean wontExpand(int n)
-
getSpaceUsedInWords
public int getSpaceUsedInWords()
-
getSpaceOverheadInWords
public static int getSpaceOverheadInWords()
-
clear
public void clear()
Description copied from interface:PositiveIntSetremove all members of the set- Specified by:
clearin interfacePositiveIntSet
-
contains
public boolean contains(int rawKey)
- Specified by:
containsin interfacePositiveIntSet- Parameters:
rawKey- -- Returns:
- true if key is in the set
-
find
public int find(int rawKey)
- Specified by:
findin interfacePositiveIntSet- Parameters:
rawKey- an item which may be in the set- Returns:
- -1 if the item is not in the set, or a position value that can be used with iterators to start at that item.
-
add
public boolean add(int rawKey)
- Specified by:
addin interfacePositiveIntSet- Parameters:
rawKey- -- Returns:
- true if this set did not already contain the specified element
-
remove
public boolean remove(int rawKey)
mostPositive and mostNegative are not updated for removes. So these values may be inaccurate, but mostPositive is always >= actual most positive, and mostNegative is always <= actual most negative. No conversion from int to short Can't replace the item with a 0 because other keys that were stored in the table which previously collided with the removed item won't be found. UIMA-4204- Specified by:
removein interfacePositiveIntSet- Parameters:
rawKey- the value to remove- Returns:
- true if the key was present
-
size
public int size()
- Specified by:
sizein interfacePositiveIntSet- Returns:
- number of elements in the set
-
getMostPositive
public int getMostPositive()
- Returns:
- a value that is >= the actual most positive value in the table. it will be == unless a remove operation has removed a most positive value
-
getMostNegative
public int getMostNegative()
- Returns:
- a value that is <= the actual least positive value in the table. It will be == unless remove operations has removed a least positive value.
-
showHistogram
public void showHistogram()
-
get
public int get(int index)
For iterator use, position is a magic number returned by the internal find For short keys, the value stored for adjKey == 0 is -1, adjKey == -1 is -2, etc.- Specified by:
getin interfacePositiveIntSet- Parameters:
index- - get the element at this position. This is for iterator use only, and is not related to any key- Returns:
- the element
-
iterator
public IntListIterator iterator()
- Specified by:
iteratorin interfacePositiveIntSet- Returns:
- an iterator (may be ordered or unordered) over the members of the set
-
moveToFirst
public int moveToFirst()
Description copied from interface:PositiveIntSetFor FSBagIndex low level iterator use- Specified by:
moveToFirstin interfacePositiveIntSet- Returns:
- the position of the first element, or -1;
-
moveToLast
public int moveToLast()
Description copied from interface:PositiveIntSetFor FSBagIndex low level iterator use- Specified by:
moveToLastin interfacePositiveIntSet- Returns:
- the position of the last element, or -1;
-
moveToNext
public int moveToNext(int position)
Description copied from interface:PositiveIntSetFor FSBagIndex low level iterator use- Specified by:
moveToNextin interfacePositiveIntSet- Parameters:
position- -- Returns:
- the position of the next element, or -1;
-
moveToPrevious
public int moveToPrevious(int position)
Description copied from interface:PositiveIntSetFor FSBagIndex low level iterator use- Specified by:
moveToPreviousin interfacePositiveIntSet- Parameters:
position- -- Returns:
- the position of the next element, or -1;
-
isValid
public boolean isValid(int position)
Description copied from interface:PositiveIntSetFor FSBagIndex low level iterator use- Specified by:
isValidin interfacePositiveIntSet- Parameters:
position- -- Returns:
- true if the position is between the first and last element inclusive.
-
bulkAddTo
public void bulkAddTo(IntVector v)
Description copied from interface:PositiveIntSetadd all elements in this set to the IntVector v as a bulk operation- Specified by:
bulkAddToin interfacePositiveIntSet- Parameters:
v- - to be added to
-
toIntArray
public int[] toIntArray()
- Specified by:
toIntArrayin interfacePositiveIntSet- Returns:
- the set as an arbitrarily ordered int array
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-