61 lines
1.6 KiB
Java
61 lines
1.6 KiB
Java
|
//: containers/AssociativeArray.java
|
||
|
// Associates keys with values.
|
||
|
import static net.mindview.util.Print.*;
|
||
|
|
||
|
public class AssociativeArray<K,V> {
|
||
|
private Object[][] pairs;
|
||
|
private int index;
|
||
|
public AssociativeArray(int length) {
|
||
|
pairs = new Object[length][2];
|
||
|
}
|
||
|
public void put(K key, V value) {
|
||
|
if(index >= pairs.length)
|
||
|
throw new ArrayIndexOutOfBoundsException();
|
||
|
pairs[index++] = new Object[]{ key, value };
|
||
|
}
|
||
|
@SuppressWarnings("unchecked")
|
||
|
public V get(K key) {
|
||
|
for(int i = 0; i < index; i++)
|
||
|
if(key.equals(pairs[i][0]))
|
||
|
return (V)pairs[i][1];
|
||
|
return null; // Did not find key
|
||
|
}
|
||
|
public String toString() {
|
||
|
StringBuilder result = new StringBuilder();
|
||
|
for(int i = 0; i < index; i++) {
|
||
|
result.append(pairs[i][0].toString());
|
||
|
result.append(" : ");
|
||
|
result.append(pairs[i][1].toString());
|
||
|
if(i < index - 1)
|
||
|
result.append("\n");
|
||
|
}
|
||
|
return result.toString();
|
||
|
}
|
||
|
public static void main(String[] args) {
|
||
|
AssociativeArray<String,String> map =
|
||
|
new AssociativeArray<String,String>(6);
|
||
|
map.put("sky", "blue");
|
||
|
map.put("grass", "green");
|
||
|
map.put("ocean", "dancing");
|
||
|
map.put("tree", "tall");
|
||
|
map.put("earth", "brown");
|
||
|
map.put("sun", "warm");
|
||
|
try {
|
||
|
map.put("extra", "object"); // Past the end
|
||
|
} catch(ArrayIndexOutOfBoundsException e) {
|
||
|
print("Too many objects!");
|
||
|
}
|
||
|
print(map);
|
||
|
print(map.get("ocean"));
|
||
|
}
|
||
|
} /* Output:
|
||
|
Too many objects!
|
||
|
sky : blue
|
||
|
grass : green
|
||
|
ocean : dancing
|
||
|
tree : tall
|
||
|
earth : brown
|
||
|
sun : warm
|
||
|
dancing
|
||
|
*///:~
|