public class SparseBinSearchShortArray extends SparseShortArray
Element access has worst-case O(log n) performance. Appends (where the index being added is greater than the existing indices) has O(1) complexity. Random puts have worst case O(n + log n) complexity. Complexity for getting values by increasing index for iteration through the non-zero values is O(1).
In summary, this implementation has good access performance, and is fast for appending values, but slow for putting at random indices. It is is optimal for a scenario where you first create the sparse array and put values in order of increasing indices, and later use the array mostly for reading.
SparseShortArray.DualEntry, SparseShortArray.Entry
Modifier and Type | Field and Description |
---|---|
protected int[] |
keys |
protected int |
used |
protected short[] |
values |
DEFAULT_CAPACITY, length
Constructor and Description |
---|
SparseBinSearchShortArray(int length)
Construct the array with the given length
|
SparseBinSearchShortArray(int length,
float density)
Construct the array with the given length and expected density
|
SparseBinSearchShortArray(int length,
int capacity)
Construct the array with the given length and capacity for non-zero elements
|
SparseBinSearchShortArray(int length,
int used,
int[] keys,
short[] values)
Generate a new
SparseBinSearchShortArray wrapper which works around
an existing array of keys and values |
SparseBinSearchShortArray(short[] values)
Construct from an existing array of values
|
Modifier and Type | Method and Description |
---|---|
void |
compact()
Compact the space being used by the array if possible.
|
SparseShortArray |
copy()
Deep copy the array.
|
Iterable<SparseShortArray.Entry> |
entries()
Provide an iterator over the non-zero values.
|
boolean |
equals(Object obj) |
short |
get(int key)
Get the value at the given index.
|
int |
hashCode() |
short |
increment(int key,
short value)
Increment the value at the given index.
|
int[] |
indices() |
boolean |
isUsed(int key)
Check whether the given index is used (i.e.
|
SparseShortArray |
reverse()
Reverse the elements, returning this.
|
short |
set(int key,
short value)
Set the value at the given index.
|
Iterable<SparseShortArray.DualEntry> |
unionEntries(SparseBinSearchShortArray otherArray)
Provide an iterator over the union of values present in
both this array and another array.
|
Iterable<SparseShortArray.DualEntry> |
unionEntries(SparseShortArray otherArray)
Provide an iterator over the union of values present in
both this array and another array.
|
int |
used() |
short[] |
values() |
add, addInplace, asciiHeader, binaryHeader, concatenate, concatenate, concatenateArrays, density, dotProduct, intersectEntries, length, maxIndex, maxValue, minIndex, minValue, multiply, multiplyInplace, readASCII, readBinary, setLength, size, subtract, subtractInplace, sumValues, sumValuesSquared, toArray, toArray, writeASCII, writeBinary
public SparseBinSearchShortArray(short[] values)
values
- the valuespublic SparseBinSearchShortArray(int length, int used, int[] keys, short[] values)
SparseBinSearchShortArray
wrapper which works around
an existing array of keys and valueslength
- used
- keys
- values
- public SparseBinSearchShortArray(int length)
length
- the lengthpublic SparseBinSearchShortArray(int length, int capacity)
length
- the lengthcapacity
- the capacitypublic SparseBinSearchShortArray(int length, float density)
length
- the lengthdensity
- the densitypublic int[] indices()
indices
in class SparseShortArray
public short[] values()
values
in class SparseShortArray
public Iterable<SparseShortArray.DualEntry> unionEntries(SparseShortArray otherArray)
SparseShortArray
Note: the SparseShortArray.DualEntry
returned by the iterator
is always the same object. In addition, the iterator
cannot affect the value of anything in the array (i.e.
changing anything in the SparseShortArray.DualEntry
has no effect
on the actual array).
unionEntries
in class SparseShortArray
otherArray
- the second arraypublic Iterable<SparseShortArray.DualEntry> unionEntries(SparseBinSearchShortArray otherArray)
Note: the SparseShortArray.DualEntry
returned by the iterator
is always the same object. In addition, the iterator
cannot affect the value of anything in the array (i.e.
changing anything in the SparseShortArray.DualEntry
has no effect
on the actual array).
otherArray
- the second arraypublic Iterable<SparseShortArray.Entry> entries()
SparseShortArray
Note: the SparseShortArray.Entry
returned by the iterator
is always the same object. In addition, the iterator
cannot affect the value of anything in the array (i.e.
changing anything in the SparseShortArray.Entry
has no effect
on the actual array).
entries
in class SparseShortArray
public short get(int key)
SparseShortArray
get
in class SparseShortArray
key
- the indexpublic boolean isUsed(int key)
SparseShortArray
isUsed
in class SparseShortArray
key
- the indexpublic short set(int key, short value)
SparseShortArray
set
in class SparseShortArray
key
- the index.value
- the value to set.public short increment(int key, short value)
SparseShortArray
increment
in class SparseShortArray
key
- the indexvalue
- the amount to increment by.public int used()
used
in class SparseShortArray
public void compact()
SparseShortArray
compact
in class SparseShortArray
public SparseShortArray copy()
SparseShortArray
copy
in class SparseShortArray
public SparseShortArray reverse()
SparseShortArray
reverse
in class SparseShortArray