|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.util.SentinelIntSet
public class SentinelIntSet
A native int hash-based set where one value is reserved to mean "EMPTY" internally. The space overhead is fairly low
as there is only one power-of-two sized int[] to hold the values. The set is re-hashed when adding a value that
would make it >= 75% full. Consider extending and over-riding hash(int)
if the values might be poor
hash keys; Lucene docids should be fine.
The internal fields are exposed publicly to enable more efficient use at the expense of better O-O principles.
SentinelIntSet set = ... for (int v : set.keys) { if (v == set.emptyVal) continue; //use v... }
Field Summary | |
---|---|
int |
count
|
int |
emptyVal
|
int[] |
keys
A power-of-2 over-sized array holding the integers in the set along with empty values. |
int |
rehashCount
the count at which a rehash should be done |
Constructor Summary | |
---|---|
SentinelIntSet(int size,
int emptyVal)
|
Method Summary | |
---|---|
void |
clear()
|
boolean |
exists(int key)
Does this set contain the specified integer? |
int |
find(int key)
(internal) Returns the slot for this key, or -slot-1 if not found |
int |
getSlot(int key)
(internal) Returns the slot for this key |
int |
hash(int key)
(internal) Return the hash for the key. |
int |
put(int key)
Puts this integer (key) in the set, and returns the slot index it was added to. |
void |
rehash()
(internal) Rehashes by doubling int[] key and filling with the old values. |
int |
size()
The number of integers in this set. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public int[] keys
public int count
public final int emptyVal
public int rehashCount
Constructor Detail |
---|
public SentinelIntSet(int size, int emptyVal)
size
- The minimum number of elements this set should be able to hold without rehashing
(i.e. the slots are guaranteed not to change)emptyVal
- The integer value to use for EMPTYMethod Detail |
---|
public void clear()
public int hash(int key)
public int size()
public int getSlot(int key)
public int find(int key)
public boolean exists(int key)
public int put(int key)
public void rehash()
int[] key
and filling with the old values.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |