java list对象复制,发现问题和解决方案

问题:接口返回值:[{key:1,value:一#二},{key:2,value:三#四}],实际上是两条数据,key不变,value值多条用#分隔开,需要分隔成两个list

想要的效果:[[{key:1,value:一},{key:2,value:三}],[{key:1,value:二},{key:2,value:四}]]。

解决思路:

1.首先根据分隔符,来确定将list对象拆分成几个list对象。

2.因为key的值不变,只需要改变value值即可,所以想复制list对象,做修改即可。

3.直接赋值不可,因为指向同一地址,改变了对象,原始数据也会变,所以想到了深拷贝。

4.深拷贝后发现,改变了拷贝的对象值,原始对象还是变了,debug,发现list是生成新的地址了,但是list中的对象,并没有改变。

5.用了最原始的方式,创建空的list,在创建新的对象,add添加进去。

List<list<对象>> firstFloor = new ArrayList<>();

for (int i=0;i<分隔数组.length;i++){

list<对象> twoFloor = new ArrayList<>();

for (int j=0;j<原始list.size();j++){

对象 = new 对象();

将原始对象的值塞入新对象中

twoFloor.add(对象);

}

firstFloor.add(twoFloor);

}

暂时解决了问题,不够优秀,再找一找更优秀的解决方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值