Package org.jf.util
Class SparseArray<E>
java.lang.Object
org.jf.util.SparseArray<E>
SparseArrays map integers to Objects. Unlike a normal array of Objects,
there can be gaps in the indices. It is intended to be more efficient
than using a HashMap to map Integers to Objects.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new SparseArray containing no mappings.SparseArray(int initialCapacity) Creates a new SparseArray containing no mappings that will not require any additional memory allocation to store the specified number of mappings. -
Method Summary
Modifier and TypeMethodDescriptionvoidPuts a key/value pair into the array, optimizing for the case where the key is greater than all existing keys in the array.private static intbinarySearch(int[] a, int start, int len, int key) voidclear()Removes all key-value mappings from this SparseArray.voiddelete(int key) Removes the mapping from the specified key, if there was any.voidensureCapacity(int capacity) Increases the size of the underlying storage if needed, to ensure that it can hold the specified number of items without having to allocate additional memoryprivate voidgc()get(int key) Gets the Object mapped from the specified key, ornullif no such mapping has been made.Gets the Object mapped from the specified key, or the specified Object if no such mapping has been made.intindexOfKey(int key) Returns the index for whichkeyAt(int)would return the specified key, or a negative number if the specified key is not mapped.intindexOfValue(E value) Returns an index for whichvalueAt(int)would return the specified key, or a negative number if no keys map to the specified value.intkeyAt(int index) Given an index in the range0...size()-1, returns the key from theindexth key-value mapping that this SparseArray stores.voidAdds a mapping from the specified key to the specified value, replacing the previous mapping from the specified key if there was one.voidremove(int key) Alias fordelete(int).voidsetValueAt(int index, E value) Given an index in the range0...size()-1, sets a new value for theindexth key-value mapping that this SparseArray stores.intsize()Returns the number of key-value mappings that this SparseArray currently stores.valueAt(int index) Given an index in the range0...size()-1, returns the value from theindexth key-value mapping that this SparseArray stores.
-
Field Details
-
DELETED
-
mGarbage
private boolean mGarbage -
mKeys
private int[] mKeys -
mValues
-
mSize
private int mSize
-
-
Constructor Details
-
SparseArray
public SparseArray()Creates a new SparseArray containing no mappings. -
SparseArray
public SparseArray(int initialCapacity) Creates a new SparseArray containing no mappings that will not require any additional memory allocation to store the specified number of mappings.
-
-
Method Details
-
get
Gets the Object mapped from the specified key, ornullif no such mapping has been made. -
get
Gets the Object mapped from the specified key, or the specified Object if no such mapping has been made. -
delete
public void delete(int key) Removes the mapping from the specified key, if there was any. -
remove
public void remove(int key) Alias fordelete(int). -
gc
private void gc() -
put
Adds a mapping from the specified key to the specified value, replacing the previous mapping from the specified key if there was one. -
size
public int size()Returns the number of key-value mappings that this SparseArray currently stores. -
keyAt
public int keyAt(int index) Given an index in the range0...size()-1, returns the key from theindexth key-value mapping that this SparseArray stores. -
valueAt
Given an index in the range0...size()-1, returns the value from theindexth key-value mapping that this SparseArray stores. -
setValueAt
Given an index in the range0...size()-1, sets a new value for theindexth key-value mapping that this SparseArray stores. -
indexOfKey
public int indexOfKey(int key) Returns the index for whichkeyAt(int)would return the specified key, or a negative number if the specified key is not mapped. -
indexOfValue
Returns an index for whichvalueAt(int)would return the specified key, or a negative number if no keys map to the specified value. Beware that this is a linear search, unlike lookups by key, and that multiple keys can map to the same value and this will find only one of them. -
clear
public void clear()Removes all key-value mappings from this SparseArray. -
append
Puts a key/value pair into the array, optimizing for the case where the key is greater than all existing keys in the array. -
ensureCapacity
public void ensureCapacity(int capacity) Increases the size of the underlying storage if needed, to ensure that it can hold the specified number of items without having to allocate additional memory- Parameters:
capacity- the number of items
-
binarySearch
private static int binarySearch(int[] a, int start, int len, int key) -
getValues
- Returns:
- a read-only list of the values in this SparseArray which are in ascending order, based on their associated key
-