list.add内容重复,解决思考

1.说明问题:在for循环中创建一个Javabean对象,然后将遍历的值通过set方法更改,将set后的JavaBean对象add到list中。他只会add最后set到的值,解决如下,代码如下:

for (int i = 0; i < array.size(); i++) {
//声明JavaBean对象,注意啦:在这里声明对象就会造成我们说的问题
				//B_admin_licens xzxk = new B_admin_licens();
				String json = array.getString(i);
				json = pretreatment(json);
				JSONObject jsont = JSON.parseObject(json);
				Object id = jsont.get("id");
				Object company_id = jsont.get("company_id");
				String qy_str = jsont.getString("qy_json");
				JSONObject qy_json = JSON.parseObject(qy_str);
				JSONArray info_array = qy_json.getJSONArray("info");
				JSONArray title = qy_json.getJSONArray("title");
				// 遍历info的内容
				for (int j = 0; j < info_array.size(); j++) {
				//注意啦:在这里声明对象就会有新的值
				B_admin_licens xzxk = new B_admin_licens();
					JSONArray info_list = info_array.getJSONArray(j);					
					xzxk.setId(id);
					xzxk.setCompany_id(company_id);
					// 判断key和value是否对等
					if (title.size() != info_list.size()) {
						// System.out.println("error");
					}
					// 遍历info数组的内容
					else if (title.size() == info_list.size()) {

						if (info_list.size() == 9) {
							for (int k = 0; k < info_list.size(); k++) {
								xzxk.setAllowNo(info_list.getString(1));
								xzxk.setAllowName(info_list.getString(2));
								xzxk.setTermFrom(info_list.getString(3));
								xzxk.setTermTo(info_list.getString(4));
								xzxk.setAllowOrg(info_list.getString(5));
								xzxk.setAllowContent(info_list.getString(6));
								xzxk.setAllowStatus(info_list.getString(7));
								xzxk.setDetail(info_list.getString(8));
							}
						}
						
						}
						list.add(xzxk);
					}
					// list.add(xzxk1);

				}

			}

		} catch (Exception e) {
			e.printStackTrace();

		} finally {
		}
		return list;
	}

总结:JavaBean在for循环中,new一次给一个新的内存地址,如是在for循环外new的话从始至终都只有一个地址来存放JavaBean,所以最后循环的就是输出的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值