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

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

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的嵌套

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值