Package org.apache.uima.internal.util
Class Common_hash_support
java.lang.Object
org.apache.uima.internal.util.Common_hash_support
- Direct Known Subclasses:
Int2ObjHashMap,IntHashSet,Obj2IntIdentityHashMap,ObjHashSet
A common superclass for hash maps and hash sets
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceprotected class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intset to the first found_removed when searchingprotected int[]protected final intprotected final floatprotected intprotected static final intprotected static final intprotected static final intprotected intprotected booleanprivate intprotected intprotected static final booleanprivate static Common_hash_support -
Constructor Summary
ConstructorsConstructorDescriptionCommon_hash_support(int initialSizeBeforeExpanding) Common_hash_support(int initialSizeBeforeExpanding, float factor) -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()private voidprotected abstract voidprotected voidprotected voidonly called if actually found and removed an entryprotected abstract voidcopy_to_new_table(int new_capacity, int old_capacity, Common_hash_support.CommonCopyOld2New r) private voidcopyOld2New(int new_capacity, int old_capacity) This method calls the subclass's copy_to_new_table method, passing an inner lambda containing common code for copying old to new.protected voidprotected intfindPosition(int hash, IntPredicate is_eq_or_not_present, IntPredicate is_removed_key) It gets a ref to the current value of table, and then searches that array.(package private) intprotected voidprotected abstract booleanis_valid_key(int pos) protected abstract intprivate voidprivate voidAs REMOVED tokens populate, the number of 0's (representing free cells and also the end of bucket chain searches) drops.protected intmoveToNextFilled(int pos) advance pos until it points to a non 0 or is 1 past end If pos is negative, start at 0.protected intmoveToPreviousFilled(int pos) decrement pos until it points to a non 0 or is -1 If pos is beyond end start at end.protected abstract voidnewKeysAndValues(int capacity) protected voidnewTable(int capacity) protected voidvoidintsize()static inttableSpace(int numberOfElements, Float factor) private voidupdateHistogram(int nbrProbes)
-
Field Details
-
TUNE
protected static final boolean TUNE- See Also:
-
tune_instance
-
MIN_SIZE
protected static final int MIN_SIZE- See Also:
-
MIN_CAPACITY
protected static final int MIN_CAPACITY- See Also:
-
MIN_CAPACITY_SHRINK
protected static final int MIN_CAPACITY_SHRINK- See Also:
-
loadFactor
protected final float loadFactor -
initialCapacity
protected final int initialCapacity -
histogram
protected int[] histogram -
maxProbe
protected int maxProbe -
sizeWhichTriggersExpansion
protected int sizeWhichTriggersExpansion -
size
private int size -
removed
protected int removed -
found_removed
protected int found_removedset to the first found_removed when searching -
secondTimeShrinkable
protected boolean secondTimeShrinkable
-
-
Constructor Details
-
Common_hash_support
public Common_hash_support(int initialSizeBeforeExpanding) - Parameters:
initialSizeBeforeExpanding- the number of elements the table should hold before expanding
-
Common_hash_support
public Common_hash_support(int initialSizeBeforeExpanding, float factor) -
Common_hash_support
-
-
Method Details
-
clear
public void clear() -
clearExisting
private void clearExisting() -
findPosition
protected int findPosition(int hash, IntPredicate is_eq_or_not_present, IntPredicate is_removed_key) It gets a ref to the current value of table, and then searches that array. Side effect: found_removed is set to the position of the first REMOVED_KEY (if any) encountered during the search.- Parameters:
hash- the hash code of the keyis_eq_or_not_present- true if the key at the int position is == to the key, or is 0is_removed_key- true if the key at the int position is "removed"- Returns:
- the probeAddr in keys array. The value is the not-present-value if not found
-
maybeRebalanceRemoves
private void maybeRebalanceRemoves()As REMOVED tokens populate, the number of 0's (representing free cells and also the end of bucket chain searches) drops. If this drops a lot, then searches take much longer. If there are no 0's left, searches never terminate! Keep the number of 0's at about 1 - load factor -
copyOld2New
private void copyOld2New(int new_capacity, int old_capacity) This method calls the subclass's copy_to_new_table method, passing an inner lambda containing common code for copying old to new. That inner lambda, when invoked by the copy_to_new_table method, is passed another lambda of one argument (the old index) which is called to copy each element.- Parameters:
new_capacity-old_capacity-
-
moveToNextFilled
protected int moveToNextFilled(int pos) advance pos until it points to a non 0 or is 1 past end If pos is negative, start at 0. Don't move if pos already has valid key- Parameters:
pos- -- Returns:
- updated pos
-
moveToPreviousFilled
protected int moveToPreviousFilled(int pos) decrement pos until it points to a non 0 or is -1 If pos is beyond end start at end. Don't move if pos already has valid key- Parameters:
pos- -- Returns:
- updated pos
-
newTable
protected void newTable(int capacity) -
incrementSize
protected void incrementSize() -
maybeIncreaseTableCapacity
private void maybeIncreaseTableCapacity() -
commonPutOrAddNotFound
protected void commonPutOrAddNotFound() -
commonRemove
protected void commonRemove()only called if actually found and removed an entry -
size
public int size() -
is_valid_key
protected abstract boolean is_valid_key(int pos) -
keys_length
protected abstract int keys_length() -
newKeysAndValues
protected abstract void newKeysAndValues(int capacity) -
clearKeysAndValues
protected abstract void clearKeysAndValues() -
copy_to_new_table
protected abstract void copy_to_new_table(int new_capacity, int old_capacity, Common_hash_support.CommonCopyOld2New r) -
resetHistogram
protected void resetHistogram() -
updateHistogram
private void updateHistogram(int nbrProbes) -
showHistogram
public void showHistogram() -
getCapacity
int getCapacity() -
tableSpace
- Parameters:
numberOfElements- -factor- -- Returns:
- capacity of the main table (either 2 byte or 4 byte entries)
-
debugValidate
protected void debugValidate()
-