Package ghidra.util.datastruct
Class ObjectKeyIndexer<T>
java.lang.Object
ghidra.util.datastruct.ObjectKeyIndexer<T>
This class converts arbitrary Objects into compacted int indexes suitable
for use as indexes into an array or table. Whenever a new key is added,
the smallest unused index is allocated and associated with that key.
Basically hashes the keys into linked lists using the IntListIndexer class,
where all values in a list have
the same hashcode. Does most of the work in implementing a separate chaining
version of a hashtable - the only thing missing is the values which are stored
in the individual implementations of the various hashtables.
-
Constructor Summary
ConstructorDescriptionConstructs an ObjectKeyIndexer with a default capacity.ObjectKeyIndexer
(int capacity) Constructs an ObjectKeyIndexer with a given initial capacity. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Remove all keys.int
Returns the index for the given key, or -1 if key is not in the table.int
Returns the current size of the key table.T[]
int
getSize()
Returns the number of keys stored in the table.int
Returns an index that will always be associated to the given key as long as the key remains in the table.int
Removes the key from the table.
-
Constructor Details
-
ObjectKeyIndexer
public ObjectKeyIndexer()Constructs an ObjectKeyIndexer with a default capacity. -
ObjectKeyIndexer
public ObjectKeyIndexer(int capacity) Constructs an ObjectKeyIndexer with a given initial capacity.- Parameters:
capacity
- the initial capacity.
-
-
Method Details
-
put
Returns an index that will always be associated to the given key as long as the key remains in the table. If the key already exists, then the index where that key is stored is returned. If the key is new, then a new index is allocated, the key is stored at that index, and the new index is returned.- Parameters:
key
- the key to be stored.- Returns:
- index for key, or -1 if there was no room to put the key.
- Throws:
IndexOutOfBoundsException
- thrown if this object is at maximum capacity.
-
get
Returns the index for the given key, or -1 if key is not in the table.- Parameters:
key
- the key for which to find an index.
-
remove
Removes the key from the table.- Parameters:
key
- the key to remove.- Returns:
- index of the key if the key was found, -1 if key did not exist in the table
-
getSize
public int getSize()Returns the number of keys stored in the table. -
getCapacity
public int getCapacity()Returns the current size of the key table. -
clear
public void clear()Remove all keys. -
getKeys
-