java05_数据结构嵌套的一个有趣的问题

来源:互联网 发布:简单片头制作软件 编辑:程序博客网 时间:2024/06/17 11:45

今天在封装一段代码时遇到这样一个问题

Tools类中为了实现maplist嵌套   用map对象反复将数据放入list中 我用了这样一段代码

LIst<Map<String,int>> list=new List<Map<String,int>>();

MapString,int>map=new Map<String,int>();

rs=stat.executeQuery(sql);

ResultSetMetaData rsmd=rs.getMetaData();

int t=0;

int count =rsmd.getColumnCount();

While(rs.next()){

   for(int i=1;i<=count;i++){

Map.clear();

String name=rsmd.getColumnName(i);

int type=rsmd.getColumnType(i);

switch(type){

case java.sql.Types.INTEGER:

int values=rs.getInt(name);

map.put(name, values);

     }

List.add(map);


}

 

以上有一些为连接数据库的语言  意思也就是把数据库中的表的数据放入maplist嵌套的结构之中  最后发现  这个list只多次存储了同一个对象  其中调试了很久  最后发现 将map.clear()换成map的定义函数就行了  我原本以为map定义一次即可 每次存进list之后即可销毁重新存入值  然而listadd函数只是将map的物理位置告诉了map  里面存的元素一旦改变 list中的元素随之改变   这样 当mapClear执行  list即清空 解决的办法就是每次要向list中添加数据  只有定义一个新的map对象  虽然对象名字都为map 但是彼此的物理位置不同 在往list添加数据时互不干扰  这样 便完成了maplist的嵌套

 

 

 

 

原创粉丝点击