在list里循环放入map,每次map里的值都不一样,可是放入后再取出来就变成一样的了,求解??

List list=AcquisitionBo.runningMessage(stationname, nodename,xml);(相当于从别的地方查出来值放入list,值都是不一样的)

List list2=new ArrayList();
Map map = new HashMap<String ,String>();
for(Iterator it = list.iterator();it.hasNext();){
RunningVo objs=(RunningVo) it.next();
if(objs.getSinglename().equals("false")){
list2.add(objs.getSinglename());
list2.add(objs.getSinglevalue());
}else{
map.put("nodename", objs.getNodename());
map.put("singlename", objs.getSinglename());
map.put("singlevalue", objs.getSinglevalue());
map.put("acquisitiontime", objs.getAcquisitiontime());
list2.add(map);(每次取到map元素的值也不一样,把它add到list里,以前添加的值也变成现在的值了)
}

}
小菜急等,晕呀!!!!

list里面放的是同一个对象map的堆地址,指向的都是同一个对象
你把 Map map = new HashMap<String ,String>();这段代码放到for循环里面就好了,表示list中放的是不同的对象

package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* 测试
*/
public class E1 {
public static void main(String[] args){
List<Map<String ,String>> list=new ArrayList<Map<String ,String>>();
Map<String ,String> map = new HashMap<String ,String>();
for (int i = 0; i < 10; i++) {
map.put(""+i, ""+i) ;
list.add(map);
}
Map<String ,String> map2 = new HashMap<String ,String>();
for (int i = 0; i < list.size(); i++) {
map2 = list.get(i);
for (Iterator<String> iterator = map2.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
System.out.print(key+":"+map2.get(key)+"\t");
}
System.out.println();
}
}

}
输出:

3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
温馨提示:内容为网友见解,仅供参考
无其他回答

在list里循环放入map,每次map里的值都不一样,可是放入后再取出来就...
你把 Map map = new HashMap<String ,String>();这段代码放到for循环里面就好了,表示list中放的是不同的对象 package test;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;\/ 测试 \/ public class E1 { public stati...

在List中存放了一个map,怎么在java后台获取这个List中map中的值?
LIST 是以数组形式存储的 map是以key-value形式Map map =(Map)list.get(i);取到了map 在从map里面get(key)就行了key是你当初存放在map里面的关键字

js怎么判断一个list里有重复map
js判断一个list里有重复map方法如下:1、先利用ES6语法将数组去重,之后再与原数组比较长度,若长度小于原数组,则说明数组有重复值。2、先将数组转换成字符串,再遍历数组,在字符串中移除当前的数组元素之后还能找到该元素,则说明数组有重复值。3、对数组进行排序,对比上一个元素和下一个元素是否相...

freemarker中循环list中的map问题
map1.put("address", "china");list.add(map1);Map map2 = new HashMap();map2.put("phone", "13888888888");map2.put("email", "china@vip.com");map2.put("address", "beijing");list.add(map2);test.ftl文件:<#list list as map> <#list map?keys as itemKey> <#if it...

快速把List<Map>中的某一项取出并储存到List
首先,假设你有一个List<Map>,这个列表中每个Map都有"name"键。要获取所有"name"键的值,你可以使用Java 8的Stream API:java List nameValues = yourList.stream().map(map -> map.get("name")).collect(Collectors.toList());这段代码中,`stream()`方法将List转换为Stream,`map()`函数...

JAVA中map中存储list集合问题。
这个没什么问题啊,map中放的是list的一个引用,等它取出list再赋给另一个list,同样也是给了个引用地址,等输出的时候再去内存单元中找值,发现有值就输出来。附:所以list不管是什么时候加东西进去,其他对象有引用到它的都一样有值

JAVA中的List里的Map 如何去除重复的Key?
“可以利用Map的key不重复特性: 遍历List,遍历过程中将List中取出的值作为key保存到一个临时的Map中,Map的value可以自己随意设定。 注意,在保存到Map之前,使用map.get("key")从Map中获取对应是数据,判断是否为null即可判断该List中的值是否...”...

从数据库中取出的值,循环放入map中,再把map放中list中,问怎样取出
Map<String, String> map = new HashMap<>();List<Map<String, String>> list = new ArrayList<>();list.add(map);for (Map<String, String> map2 : list) {for (String key : map2.keySet()) {System.err.println("key===>>" + key);System.err.println("value===>>" + map...

从数据库中取出的值,循环放入map中,再把map放中list中,问怎样取出map...
这个问题,看你的代码怎么规范。将数据库中取出的值存如map的value,再把value循环存入list。如果map的key值没有逻辑要求,可以将key字符串设置成迭代参数,如"0","1","2"等,循环如下:for(int i=0;i<length;i++){ String key=""+i;list.add(map.get(key));} ...

Map如果使用重复值
map可以使用重复值的,但是同一个map中不能有相同的键,你可以根据键取值。如果想存相同的键,你可以定义一个ArrayList,再在list中就可以存放多个map啊

相似回答