阅读Java SDK的几个核心包源码计划的flag已经立下很久了,一直没有行动。一个是因为集合框架是Java中比较常用的数据结构,从List、Set、Map到Queue等等,另外这部分会涉及到线程并发安全性的问题,所以想进一步学习弄清楚实现原理。于是,决定从List开始梳理java集合包中这部分源码的实现,方便自己日后回顾。
ArrayList
ArrayList
construct
|
|
在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。
add
|
|
remove
|
|
get
|
|
小结
1、默认容量10.
2、每次增加元素,需要保证足够大小容量,因此在不确定元素数量的情况下,会出现频繁的扩容(1.5倍),影响插入效率。
3、频繁删除元素效率较低,因为需要每次都移动大量数组元素。
4、能实现随机读取,查找效率较高。
参考
关于Java集合的小抄
Java transient关键字使用小记
-EOF-