Base class of fixed-size hash tables for uniquification. Opportunistically subclasses AtomicLongArray. The high word of each slot is the cached massaged hash of an element, and the low word contains its index, plus one, to ensure that a zero tab entry means empty. The mechanics for this are just folded into the main addElements method. Each leaf step places source array elements into table, Even though this table undergoes a lot of contention when elements are concurrently inserted by parallel threads, it is generally faster to do this than to have separate tables and then merge them.
Modifiers | Name | Description |
---|---|---|
boolean |
byIdentity |
|
AbstractParallelAnyArray |
pap |
Constructor and description |
---|
PAS.UniquifierTable
(int size, AbstractParallelAnyArray pap, boolean byIdentity) |
Type | Name and description |
---|---|
int |
addDoubles(int lo, int hi) |
int |
addLongs(int lo, int hi) |
int |
addObjects(int lo, int hi) |
static int |
hash(int h) |
static int |
tableSizeFor(int n) Returns a good size for table |
double[] |
uniqueDoubles(int size) |
long[] |
uniqueLongs(int size) |
java.lang.Object[] |
uniqueObjects(int size) Returns new array holding all elements. |
Methods inherited from class | Name |
---|---|
class java.util.concurrent.atomic.AtomicLongArray |
java.util.concurrent.atomic.AtomicLongArray#get(int), java.util.concurrent.atomic.AtomicLongArray#toString(), java.util.concurrent.atomic.AtomicLongArray#length(), java.util.concurrent.atomic.AtomicLongArray#set(int, long), java.util.concurrent.atomic.AtomicLongArray#lazySet(int, long), java.util.concurrent.atomic.AtomicLongArray#getAndAdd(int, long), java.util.concurrent.atomic.AtomicLongArray#accumulateAndGet(int, long, java.util.function.LongBinaryOperator), java.util.concurrent.atomic.AtomicLongArray#addAndGet(int, long), java.util.concurrent.atomic.AtomicLongArray#compareAndSet(int, long, long), java.util.concurrent.atomic.AtomicLongArray#decrementAndGet(int), java.util.concurrent.atomic.AtomicLongArray#getAndAccumulate(int, long, java.util.function.LongBinaryOperator), java.util.concurrent.atomic.AtomicLongArray#getAndDecrement(int), java.util.concurrent.atomic.AtomicLongArray#getAndIncrement(int), java.util.concurrent.atomic.AtomicLongArray#getAndSet(int, long), java.util.concurrent.atomic.AtomicLongArray#getAndUpdate(int, java.util.function.LongUnaryOperator), java.util.concurrent.atomic.AtomicLongArray#incrementAndGet(int), java.util.concurrent.atomic.AtomicLongArray#updateAndGet(int, java.util.function.LongUnaryOperator), java.util.concurrent.atomic.AtomicLongArray#weakCompareAndSet(int, long, long), java.util.concurrent.atomic.AtomicLongArray#wait(), java.util.concurrent.atomic.AtomicLongArray#wait(long, int), java.util.concurrent.atomic.AtomicLongArray#wait(long), java.util.concurrent.atomic.AtomicLongArray#equals(java.lang.Object), java.util.concurrent.atomic.AtomicLongArray#hashCode(), java.util.concurrent.atomic.AtomicLongArray#getClass(), java.util.concurrent.atomic.AtomicLongArray#notify(), java.util.concurrent.atomic.AtomicLongArray#notifyAll() |
class java.lang.Object |
java.lang.Object#wait(), java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Returns a good size for table
Returns new array holding all elements.
Copyright © 2008–2014 Václav Pech. All Rights Reserved.