谢谢。高分回报。
package myContainer;
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};
}
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;
}
public String toString(){
StringBuilder result = new StringBuilder();
for(int i=0;i<index;i++){
result.append(pairs[i][i].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");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Too many objects!");
}
System.out.println(map);
System.out.println(map.get("ocean")); }
}
package myContainer;
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};
}
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;
}
public String toString(){
StringBuilder result = new StringBuilder();
for(int i=0;i<index;i++){
result.append(pairs[i][i].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");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Too many objects!");
}
System.out.println(map);
System.out.println(map.get("ocean")); }
}
看了代码没问题 只看到一个问题public String toString(){
StringBuilder result = new StringBuilder();
for(int i=0;i<index;i++){
result.append(pairs[i][i].toString());
result.append(":");
result.append(pairs[i][1].toString());
if(i<index -1)
result.append("\n");
}
return result.toString();
}
改成下面这样 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();
}
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");
存了7个,还有就是楼上说的问题
public class AssociativeArray<K, V> {
// 定义二维对象数组
private Object[][] pairs; // 定义索引,默认初始化为0
private int index; /**
* 构造器,生成指定个数的二维数组
* @param length 要生成的个数
*/
public AssociativeArray(int length) {
pairs = new Object[length][2];
} /**
* 放入元素
* @param key 键
* @param value 值
*/
public void put(K key, V value) {
// 如果放入的个数已经超过申请的空间数抛出异常
if (index >= pairs.length) {
throw new ArrayIndexOutOfBoundsException();
} else {
// 否则增加元素
pairs[index++] = new Object[] { key, value };
}
} /**
* 按照指定的键取得对应的值,若不存在则返回null
* @param key
* @return
*/
public V get(K key) {
V v = null;
for (int i = 0; i < index; i++) {
if (key.equals(pairs[i][0])) {
return v = (V) pairs[i][1];
}
}
return v;
} /**
* 生写toString方法
*/
public String toString() {
StringBuilder result = new StringBuilder();
for (int i = 0; i < index; i++) {
// result.append(pairs[i][i].toString());
// 这条语句在你执行时就会报错,应该改为下面的,因为你的第二维,长度总是2,
// 如果pairs[i][i] i会取到大于2的值
result.append(pairs[i][0].toString());
result.append(":");
result.append(pairs[i][1].toString());
if (i < index - 1) result.append("\n");
}
return result.toString();
} /**
* just for test
* @param args
*/
public static void main(String args[]) {
// 声明一个长度为6的AssociativeArray
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 {
// 已经放入了6个,放入第七个时会报错
map.put("extra", "object");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Too many objects!");
}
System.out.println(map);
System.out.println(map.get("ocean"));
}
}
result.append(pairs[i][i].toString());
//这里出现错误了,Array....Exce 说是2.显然你不能
用I而是0 写错了吧.pairs[i][0]
result.append(":");
result.append(pairs[i][1].toString());
if(i<index -1)
result.append("\n");
}