在List中add对象,如果此对象是一个List或Map之类的话,当add完之后改对象发生变化,那么对应List里也会有变化,因为他们是同一个对象,代码如下:
public static void main(String[] args){
ArrayList ls = new ArrayList();
HashMap map = new HashMap();
for (int i = 1; i <= 10; i++){
map.put("key1", ""+i);
ls.add(map);
}
System.out.println(ls);
}
结果就是[{key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}]
如果想得到[{key1=1}, {key1=2}, {key1=3}, {key1=4}, {key1=5}, {key1=6}, {key1=7}, {key1=8}, {key1=9}, {key1=10}],现在我是这样做的:
public static void main(String[] args){
ArrayList ls = new ArrayList();
for (int i = 1; i <= 10; i++){
HashMap map = new HashMap();
map.put("key1", ""+i);
ls.add(map);
}
System.out.println(ls);
}
在循环中new一个Map,我想知道有没有更好的实现方式,谢谢!!
public static void main(String[] args){
ArrayList ls = new ArrayList();
HashMap map = new HashMap();
for (int i = 1; i <= 10; i++){
map.put("key1", ""+i);
ls.add(map);
}
System.out.println(ls);
}
结果就是[{key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}, {key1=10}]
如果想得到[{key1=1}, {key1=2}, {key1=3}, {key1=4}, {key1=5}, {key1=6}, {key1=7}, {key1=8}, {key1=9}, {key1=10}],现在我是这样做的:
public static void main(String[] args){
ArrayList ls = new ArrayList();
for (int i = 1; i <= 10; i++){
HashMap map = new HashMap();
map.put("key1", ""+i);
ls.add(map);
}
System.out.println(ls);
}
在循环中new一个Map,我想知道有没有更好的实现方式,谢谢!!
楼主【gryes】截止到2008-07-22 14:07:16的历史汇总数据(不包括此帖):
发帖的总数量:4 发帖的总分数:60 每贴平均分数:15
回帖的总数量:12 得分贴总数量:7 回帖的得分率:58%
结贴的总数量:4 结贴的总分数:60
无满意结贴数:1 无满意结贴分:20
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:25.00 % 无满意结分率:33.33 %
敬礼!
ArrayList ls = new ArrayList();
for (int i = 1; i <= 10; i++){
HashMap map = new HashMap();
map.put("key1", ""+i);
ls.add(map);
}
System.out.println(ls);
} 我只知道这个解法。或者你可以
public static void main(String[] args){
ArrayList ls = new ArrayList();
for (int i = 1; i <= 10; i++){
HashMap map = new HashMap();
map.put("key"+1, ""+i);}
ls.add(map);
System.out.println(ls);
} 这样就只有一个map 打印出来的是map对象的地址了。
public static void main(String[] args){
ArrayList ll = new ArrayList();
for(int i=0;i<10;i++){
HashMap mm= new HashMap();
mm.put("aaa", i);
ll.add(mm);
}
System.out.println(ll);
}
}
new一个和new多个的问题,好东西
for(int i=0;i <10;i++){
mm = new HashMap();
mm.put("aaa", i);
ll.add(mm);
}
当然这并没有实质性的改变,只不过引用变量mm将只有一个,而原来的写法应该会产生多个引用变量mm。
至于new HashMap(),数据结构需要的话,还是得new,除非好好设计下数据结构。
这种情况出现的话,就会遇到我所说的再循环中new对象的问题了,这种做法在效率上说是不好的,就是不知道有没有好的做法,难道只能在设计数据结构上考虑避免出现这样的问题吗?
大家讨论一下!!!
你每次都用一样的键值,new了很多对象这样浪费资源
public static void main(String[] args){
ArrayList ls = new ArrayList();
HashMap map = new HashMap();
for (int i = 1; i <= 10; i++){ map.put("key"+1, ""+i); }
ls.add(map);
System.out.println(ls);
}
这样我想会比较好不用浪费资源
你这样肯定行啊,添加到的都是单独的map。