com.browseengine.bobo.util.BigFloatArray Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bobo-browse Show documentation
Show all versions of bobo-browse Show documentation
Bobo is a Faceted Search implementation written purely in Java, an extension of Apache Lucene
The newest version!
package com.browseengine.bobo.util;
public class BigFloatArray {
private float[][] _array;
private int _numrows;
/* Remember that 2^SHIFT_SIZE = BLOCK_SIZE */
final private static int BLOCK_SIZE = 1024;
final private static int SHIFT_SIZE = 10;
final private static int MASK = BLOCK_SIZE - 1;
public BigFloatArray(int size) {
_numrows = size >> SHIFT_SIZE;
_array = new float[_numrows + 1][];
for (int i = 0; i <= _numrows; i++) {
_array[i] = new float[BLOCK_SIZE];
}
}
public void add(int docId, float val) {
_array[docId >> SHIFT_SIZE][docId & MASK] = val;
}
public float get(int docId) {
return _array[docId >> SHIFT_SIZE][docId & MASK];
}
public int capacity() {
return _numrows * BLOCK_SIZE;
}
public void ensureCapacity(int size) {
int newNumrows = (size >> SHIFT_SIZE) + 1;
if (newNumrows > _array.length) {
float[][] newArray = new float[newNumrows][]; // grow
System.arraycopy(_array, 0, newArray, 0, _array.length);
for (int i = _array.length; i < newNumrows; ++i) {
newArray[i] = new float[BLOCK_SIZE];
}
_array = newArray;
}
_numrows = newNumrows;
}
}