把对象的值放进list循环插入的时候会覆盖之前的数据

这是代码

   for (int i = 0; i < len; i++) {
        prpSitemKindd.setKindCode("0302");/*险别代码*/
        prpSitemKindd.setKindName(infoTpy.getInsuranceList().get(i).getInsuranceType());/*险别名称*/
        prpSitemKindd.setAmount(infoTpy.getInsuranceList().get(i).getAmount());/*保险金额*/
        prpSitemKindd.setPremium(infoTpy.getInsuranceList().get(i).getInsurancePremium());/*应缴保费*/
        prpSitemKindss.add(prpSitemKindd);
        }

第一次循环图片说明
第二次图片说明
第二次会把第一次的值覆盖 两个都是第二次的值
图片说明
得怎么写

你第一次插入的时候prpSitemKindd中存放的是第一次的值,但是你没有放开prpSitemKindd,第二次插入的时候,prpSitemKindd为第二次存放的值,
不论循环几次,prpSitemKindd中存放的都是最后一个数据值,所以就等于将最后一个数据值,循环插入进去。可以使用楼上的解决方法,不过对内存
消耗过大,创建n个prpSitemKindd对象;建议将prpSitemKindd对象放在for循环外面定义,在for里面调用。例如:
prpSitemKindd PrpSitemKindd=null;
for里面prpSitemKindd = new PrpSitemKindd;这样调用,如果你用的是spring框架,可以使用注入方式,避免new。

for (int i = 0; i < len; i++) {

PrpSitemKidd prpSitemKidd = new PrpSitemKidd();

    prpSitemKindd.setKindCode("0302");/*险别代码*/
    prpSitemKindd.setKindName(infoTpy.getInsuranceList().get(i).getInsuranceType());/*险别名称*/
    prpSitemKindd.setAmount(infoTpy.getInsuranceList().get(i).getAmount());/*保险金额*/
    prpSitemKindd.setPremium(infoTpy.getInsuranceList().get(i).getInsurancePremium());/*应缴保费*/
    prpSitemKindss.add(prpSitemKindd);
    }

java基础知识,你每次set的都是同一个对象的属性,然后又将这个对象add进集合,最终集合里面存放的n个变量都是指向堆中的同一个对象,这个对象的属性就是你
最后一次set的属性。
所以在每次循环的时候,你需要在堆中重新创建一个对象用来set属性。而不是每次重复set同一个对象。
建议有空看看《深入理解java虚拟机》这本书