java map

[复制链接]
查看11 | 回复2 | 2009-8-22 13:58:02 | 显示全部楼层 |阅读模式
map=new HashMap();此句放到了for循环里每循环一次new一个 到最后当然就一个值了 而且是最后那个 5
回复

使用道具 举报

千问 | 2009-8-22 13:58:02 | 显示全部楼层
因为map.put("id", i)操作的意义在于如果Map中没有key="id"则添加key="id",对应的value值为i如果Map中已经存在了key="id"的元素,则重新为key="id"对应的value赋新的i值..----------------惭愧的分割线----------------------汗乌龙了..没看到楼主还有map=new HashMap();这么一句,支持alphadao的解释----------------惭愧的分割线----------------------修改办法:public static void main(String[] args) {//Map map=null;//修改Map map=new HashMap();for(int i=0;i<=5;i++) { //map=new HashMap();去掉这句 map.put("id", i);}for(int i=0;i<map.size();i++) { System.out.println((Integer)map.get("id"));}}/////////////////////////////////////////////////////////想要填写进去五个不同的项目,就要让key变得不一样,否则会出现我之前说的问题..比如:public static void main(String[] args) {//Map map=null;//修改Map map=new HashMap();for(int i=0;i<=5;i++) { //map=new HashMap();去掉这句 map.put("id"+i, i);//让每次的key值变得不同..}for(int i=0;i<map.size();i++) { System.out.println((Integer)map.get("id"));}} ==================解决的分割线======================for(int i=0;i<map.size();i++) { System.out.println((Integer)map.get("id"));}改成:for(int i=0;i<map.size();i++) { System.out.println((Integer)map.get("id"+i));}
回复

使用道具 举报

千问 | 2009-8-22 13:58:02 | 显示全部楼层
for(int i=0;i<=5;i++) { map=new HashMap(); map.put("id", i);}因为你是在循环里创造map实例的,在i=0时创造一个new HashMap(),在i=1时创造一个new HashMap(),。。。在i=4时创造一个new HashMap(),总是后一个把前一个map实例代替了。应该把 map=new HashMap(); 放在for的外面,map=new HashMap();for(int i=0;i<=5;i++) { map.put("id", i);}可以直接 Map map=new HashMap();不用 Map map=null;这个创造实例放在for里面是基础的错误,要避免。 而且你不能用for一直添加map内容,map不能存入五次相同的map.put("id", i); “id”位置的数要不一样。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行