List Class Diagram:

笔记一:

1、Iterable 接口只定义一个iterator()方法。

Iterator 接口有hasNext, next, remove方法。

ListIterator接口继承Iterator接口,增加了hasPrevicous,previous,nextIndex, previousIndex,add,set方法。

2、AbstractCollection中:

(1)public <T> T[] toArray(T[] a) 方法: 如果数组a空间足够则将数据填充到a中,否则建立一个新的数组。

(2)addAll方法中有一个add成功就返回true。

(3)removeAll 方法中有个remove成功就返回true。

3、AbstractList:

(1)SubList内部类底层依赖于list.  使用偏移量实现操作。Sublist,用户操作下标从0开始。

4、迭代器维护expectedModCount 变量与List的modCount进行比较,如果不一致则抛出ConcurrentModificationException异常。

     final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}

笔记二:

5、List特性

(1)有序,可重复,允许Null

(2)Clone: 浅拷贝

6、ArrayList

(1)存储结构: 数组

(2)序列化:

transient 修饰elementData[]

ArrayList自己实现了writeObject 和ReadObject.在默认序列化的基础上,序列化list.size 和每一个元素。

(3)ListIterator迭代器当前状态是指向next,当调用previous时,返回的是next.previous,此时lastReturned和next指向同一个元素。

7、LinkedList

(1)存储结构:双向链表, 由一个header来引导,不存放实际信息。

(2)序列化:transient修饰 header

LinkedList自己实现了writeObject 和ReadObject.在默认序列化的基础上,序列化list.size 和每一个元素。

(3)ListIterator迭代器当前状态是指向next,当调用previous时,返回的是next.previous,此时lastReturned和next指向同一个元素。

8、CopyOnWriteArrayList

CopyOnWriteArrayList是ArrayList的一个变形,继承了arraylist的特性,线程安全。在进行set, add, remove 等改变性操作时都会对整个数组进行复制并替换。

(1)、适用于改变较少频繁读取的场景。

 (2)、迭代器是只读的,不能进行修改。

 (3)、在进行set,add,remove等改变性操作时会使用ReentranceLock进行加锁。

最新文章

  1. Html.DropDownLis绑定数据库
  2. 日常工作bug总结
  3. 第3月第11天 vs2005调试 ace编译
  4. Oracle 常见错误排查
  5. 查看局域网内在线的主机ip和mac地址
  6. WPF oxyPlot 使用总结
  7. SQL Server里因丢失索引造成的死锁
  8. 04-23 Android 课堂笔记
  9. [Redis] RDB &amp; AOF
  10. C#面向对象基础01
  11. SQL语句查找重复记录
  12. Java中的哈希
  13. 完美:adobe premiere cs6破解版下载[序列号+汉化包+破解补丁+破解教程]
  14. 部署一个class文件
  15. Android的回调
  16. X-006 FriendlyARM tiny4412 u-boot移植之Debug串口用起来
  17. 这一次,VR离我们真的很近
  18. FTRL(Follow The Regularized Leader)学习总结
  19. vue-resource+element upload上传(遇到formData总是变为object格式)
  20. skynet记录7:服务(c和lua)

热门文章

  1. UML(统一建模语言)
  2. 获取android控件的高度
  3. Fiddler抓包之IOS
  4. Beta-1阶段成员贡献分(代组长更新)
  5. linq 实现group by 不使用group关键字 等同lambad表达式中的group join 查询一对多关系
  6. sql server 按分组拼接数据
  7. 深入理解Java虚拟机(三)、垃圾收集算法
  8. Unix权限管理
  9. $POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
  10. aa2