自己模拟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};
求高手帮忙
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};
求高手帮忙
我觉得没什么问题吧,根据类中的定义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}}}
等等