数据结构&集合学习文章

12 篇文章 0 订阅

为什么循环遍历集合的时候不能删除?怎么解决?

For循环为什么不能对集合进行删除操作_BUG指挥官的博客-CSDN博客_加强for循环不能删除集合元素

JAVA集合为什么不能在foreach 循环中添加或删除元素? - Mccn - 博客园

ArrayList中的数组为什么用transient进行修饰

我们都知道 transient 标记的字段代表不序列化,而 ArrayList 的数组用 transient 当然就表示其内部的数据不序列化,那岂不是数据要没了?

并不是的。之所以这样标记,是因为我们数组的实际大小会大于真正的元素量,比如你的数组长度是10,实际上里面就只有5个元素。

如果正常序列化的话,那会把空值也给序列化了,所以为了只序列化实际有值的元素,ArrayList 用 transient 标记了 elementData字段,然后再实现了 writeObject 和 readObject 方法,里面的实现逻辑是只会序列化实际存在的元素。

 

 简单来说就是为了避免多余元素的序列化,用 transient  标记了 elementData 字段避免使用默认的序列化方式,定义了  writeObject 和 readObject 实现了自定义的序列化方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值