PageData temp = new PageData();
for (PageData sql:sqls) {
for (Object key : sql.keySet()) {
if(!months.contains( sql.get(key))){
months.add( (String) sql.get(key));
temp.put("name", (String) sql.get(key));
break;
}
}
for (Object key : sql.keySet()) {
if(!months.contains(sql.get(key))){
datas.add((String) sql.get(key));
temp.put("value", (String) sql.get(key));
break;
}
}
data1.add(temp);
}
这样会出现第一组数据正常,之后的所有数据全部重复,会出现这种情况的原因是,hashmap构造出来只有一个,再循环结构中不断被引用,list中添加也是添加的引用地址,所以需要保证循环体中的每一组hashmap都唯一,也就是说构造需要放到循环体中,保证引用地址唯一。代码如下
for (PageData sql:sqls) {
PageData temp = new PageData();for (Object key : sql.keySet()) {
if(!months.contains( sql.get(key))){
months.add( (String) sql.get(key));
temp.put("name", (String) sql.get(key));
break;
}
}
for (Object key : sql.keySet()) {
if(!months.contains(sql.get(key))){
datas.add((String) sql.get(key));
temp.put("value", (String) sql.get(key));
break;
}
}
data1.add(temp);
}