package com.java.test.test;
public class TestMap<K,V> {
private Object[][] pairs;
private int index;
public TestMap(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};
}
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;
}
@Override
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) {
TestMap<String,String> testMap = new TestMap<>(3);
testMap.put("sky","blue");
testMap.put("grass","green");
testMap.put("sun","warm");
try {
testMap.put("ex","object");
} catch (Exception e) {
System.out.println("Too many objects");
}
System.out.println(testMap);
System.out.println(testMap.get("sky"));
}
}
/*Output:
Too many objects
sky : blue
grass : green
sun : warm
blue
*/
关联数组中的基本方法是put()和get(),但是为了容易显示,toString()方法被覆盖为可以打印键-值对。为了展示它可以工作,main()用字符串对加载了一个TestMap,并打印了所产生的映射表,随后是获取一个值的get()。
为了使用get()方法,你需要传递想要查找的key,然后它会将与之相关联的值作为结果返回,或者在找不到的情况下返回null。get()方法使用的是可能是能想到的效率最差的方式来定位值:从数组的头部开始,使用equals()方法依次比较键。但是这简单。