首先,List接口继承于Collection接口,其中的所有方法都被继承,而Collection是无序、无下标,元素不可重复的,List是有序,有下标,元素可以重复,所以,List就有一些自己独有的方法。和数组相比较更加灵活,方便。
书写格式:
List list = new ArrayList();可以把接口的好处5体现出来,如果ArrayList()不满足需求,直接更换就可以。
接口的好处:
1.程序的耦合度降低
2.更自然的使用多态
3.设计与实现完全分离
4.更容易搭建程序框架
5.更容易更换具体实现
ArrayList:
数据结构实现,查询快、增删慢
JDK1.2版本,运行效率快、线程不安全。
构造方法:
1.
new ArrayList(); JDK7及之前,无参构造方法直接创建长度为10的Object数组,用还是不用,数组就在那里,(占内存)
JDK8之后,无参构造方法直接创建长度为0的数组,如果不用,不占空间,只有当真正插入元素时,再 分配数组空间(10个空间)
2.new ArrayList(Collection c);构造一个包含指定集合的元素的列表,它们在集合的迭代器返回的顺序中返回。
3.new ArrayList(int initialCapacity);用指定的初始容量构造一个空列表。
Vector:
I. 数组结构存储,查询快,增删慢。
II. JDK 1.0发布,执行效率慢,线程安全。
LinkedList:
I. 链表(链接列表)结构存储,查询慢、增删快。
II. 了解:Queue接口:队列、双端队列
III. 了解:栈结构Last In First Out(后进先出)
IV. 了解:队列结构First In First Out(先进先出)
追其源码可以得出,LinkedList集合存储的对象都是连接在一起,上一个对象存储了指向下一个对象的地址,下一个对象存储了上一个对象和再下一个对象的地址,以此来相互链接。