package bluej.runtime;
| A simple map implementation, for use in J2ME. Not efficient, but fine for
| how it is presently used.
|
| @author Davin McCall
|
public class BJMap<K,V>{
private V[] values;
private K[] keys;
@SuppressWarnings("unchecked")
public BJMap()
{
values = (V[]) new Object[0];
keys = (K[]) new Object[0];
}
public V get(K key)
{
for (int i = 0; i < keys.length; i++) {
if (keys[i].equals(key)) {
return values[i];
}
}
return null;
}
@SuppressWarnings("unchecked")
public void put(K key, V value)
{
for (int i = 0; i < keys.length; i++) {
if (keys[i].equals(key)) {
values[i] = value;
return;
}
}
K [] newKeys = (K []) new Object[keys.length + 1];
V [] newValues = (V []) new Object[keys.length + 1];
System.arraycopy(keys, 0, newKeys, 0, keys.length);
System.arraycopy(values, 0, newValues, 0, keys.length);
newKeys[keys.length] = key;
newValues[keys.length] = value;
keys = newKeys;
values = newValues;
}
@SuppressWarnings("unchecked")
public void remove(K key)
{
for (int i = 0; i < keys.length; i++) {
if (keys[i].equals(key)) {
K [] newKeys = (K []) new Object[keys.length - 1];
V [] newValues = (V []) new Object[keys.length - 1];
System.arraycopy(keys, 0, newKeys, 0, i);
System.arraycopy(keys, i+1, newKeys, i, keys.length - i - 1);
System.arraycopy(values, 0, newValues, 0, i);
System.arraycopy(values, i+1, newValues, i, keys.length - i - 1);
keys = newKeys;
values = newValues;
return;
}
}
}
public K[] getKeys()
{
return keys;
}
}
. BJMap
. get
. put
. remove
. getKeys
97 neLoCode
+ 3 LoComm