关于集合的整理

首先给出集合框架图
关于集合的整理
Collection接口是处理对象集合的根接口
List接口扩展自Collection,它可以定义一个允许重复的有序集合,从List接口中的方法来看,List接口主要是增加了面向位置的操作,允许在指定位置上操作元素,同时增加了一个能够双向遍历线性表的新列表迭代器ListIterator。

LinkedList适用于插入和删除元素。
链表与数组一样,都作为数据的基本存储结构,但是在存储原理上二者是不同的。在数组中,数据是存储在一段连续的内存空间中,我们可以通过下标来访问数组中的元素;而链表将每个对象存放在独立的节点中,每个节点还存放着序列中下一个节点的引用。在Java设计语言中,所有的链表实际上都是双向链接的。
链表是一个有序集合,每个对象的位置十分重要。
关于集合的整理

ArrayList用数组存储元素的,这个数组可以动态创建,如果元素个数超过了数组的容量,那么就创建一个更大的新数组,并将当前数组中的所有元素都复制到新数组中。适用于查找和遍历元素的集合。
capacity是默认的容量
elementData是列表中存放对象的数组,Java泛型只是编译器提供的语法糖,所以这里的数组是一个Object数组,以便能够容纳任何类型的对象。
size该列表的所存放的对象数量
关于集合的整理
ArrayList的底层是基于数组实现的。既然ArrayList是用数组对象来作为存储容器,那么其内存模型也和数组是一致的,是一个连续的大小相同的内存。
关于集合的整理
ArrayList内存模型
如图所示,在这段源码中数组对象的长度为5,但是调用list.size()则返回的是3。

有序无序判断

关于集合的整理