日期:2014-05-17  浏览次数:20826 次

java中的List和Map里的问题
java中关于List和Map的问题 

标签: java, list, map 

public class test1 {

private Map mes;


public Map message() {
mes = new HashMap();
mes.put("yjh", "07201138");
return mes;
}

public static void main(String args[]) {

test1 t=new test1();
Map map=new HashMap();
map=t.message();
List l=new ArrayList();
l.add(map);
System.out.println(l.get(0));
map.put("d", l.get(0));
System.out.println(map.get("d"));

}

}

代码是这样的为什么我第二个 System.out.println(map.get("d"));打印出来的
会是{d=(this Map), yjh=07201138}而不是d={ yjh=07201138 }呢?
为什么会上这样的呢? 
Map不是键值对应吗?



------解决方案--------------------
因为l.add(map);
所以:l.get(0)是一HashMap
所以:map.put("d",一HashMap);
你再map.get("d")自然返回一HashMap,呵呵!
------解决方案--------------------
你放进的是什么,他返回就会是什么
第一次你打印的是一个list,这个list
里面的放的是一个map所以会是{yjh=07201138}
第二次你在map里面放进来一个map,并且这个map
而且还是他自己,
所以会这样.要不你再打印一下list.get(0),估计和map.put的
结果是一样的

------解决方案--------------------

List 同 Set 是继承至Collections 接口的
 
Map 提供Key value 的映射,Key 和 value 都不可以重复哦,
------解决方案--------------------
你的这个d={ yjh=07201138 };key,value在哪?
{d=(this Map), yjh=07201138};这个,key是d=(this Map),value是yjh=07201138,至于key是d=(this Map),因为你没有指定,jdk给你自动指定。呵呵!