自己模拟Map集合实现,代码如下:
package cn.com.shxt.mymap;public class Map {
     
/**
 * 自己实现的Map
 */
private Object [] [] jieGou;

private int index;
 
public Map(int length){

jieGou = new Object[length][2];


}


public void put(String key,Object value){

if(index>=jieGou.length){

throw new ArrayIndexOutOfBoundsException();

}

//这里不太清楚什么意思
jieGou[index++] = new Object[]{key,value};

}

public Object get(String key){

Object object = null;

try{

for(int i = 0; i<jieGou.length; i++){

if(key.equals(jieGou[i][0])){

object = jieGou[i][1];

}
}

}catch(Exception e){

e.printStackTrace();

}

return object;

}

public String toString(){

String result = "";

try{

for(int i = 0; i<index; i++){

result += jieGou[i][0]+"-"+jieGou[i][1];



result += "\n";

}


}catch(Exception e){

e.printStackTrace();

}

return result;

}
public static void main(String[] args) {
Map map=new Map(5);
map.put("姓名1", "张三");
map.put("姓名2", "李四");
map.put("姓名3", "王五");
map.put("姓名4", "杨六");

System.out.println(map.toString());
}
}
其中
jieGou[index++] = new Object[]{key,value};
 这里是什么意思?不是二维数组吗?怎么此处Object[]成了一维数组,并且赋了两个值[]{key,value};
求高手帮忙

解决方案 »

  1.   

    jieGou[index++] = new Object[]{key,value};
    我觉得没什么问题吧,根据类中的定义jieGou[index++]这个会取到一个一维数组,或者说表示一个一维数组,而这个一维数组是已经被定义为Object[2]了的,这句话的意思是新建一个一维数组他的定义是Object[2],值是{key,value},然后把这个数组赋给jieGou[index++],
    在你的程序中第一了这样一个数组jieGou = new Object[length][2];这是个二维数组,你把它看成是n行两列的一个行列式来操作:如
    {key1,value1}
    {key2,value2}
    {key3,value3}...
    (教科书里面对二维数组也是这样示意的);那么jieGou[index++]这个表示第index++个一维数组,在操作的时候就对这个一维数组操作,这个一维数组有两个值,分别被表示为key和value。
    其实不管是二维还是几维,他就是数组中还有数组,你自己这样写一个来看看就清楚了:
    一维:数组中就是直接的数据{1,12,3,4,5,6,7,8};
    二维:数组中的数据是一个个的数组,里面那个数组才是真实的数据{{1,2},{3,3},{4,4},{4,5},...}
    三维:以上类推{{{1,2}},{{3,4}},{{5,6}},{{7,8}},{{9,0}}}
    等等