集合的遍历
1、Collection集合:没有下标
A:Iterator迭代器来遍历
B:for-each,增强for循环
2、List集合:有下标
A:Iterator迭代器来遍历
B:for-each,增强for循环
C:普通for循环,结合get(index)-->E
D:ListIterator迭代器也能遍历。

ArrayList集合
ArrayList集合,底层实现:采用数组的结构实现的。(最大的特点:内存连续)。
也会叫做变长数组。
优点:遍历集合中的元素,效率很高
缺点:更改集合中的元素,效率相对低。

LinkedList集合
LinkedList集合:底层实现:采用双向链表的结构实现。
queue:队伍,队列,行列
deque:double -ended queue,双端队列
LinkedList实现类,区别于ArrayList,除了实现List接口,还实现了Deque接口。

LinkedList实现类:
实现的接口:
List接口----------------------------------->Collection
Deque(双端队列)接口----->Queue(队列)接口------>Collection
模拟栈的结构:后进先出(LIFO),栈顶元素,
push(),压栈,入栈,pop(),弹栈,出栈
模拟队列的结构:先进先出(FIFO),队头元素
offer(),poll()
栈的结构特点:

队列的结构特点:

对比ArrayList,LinkedList,Vector实现类
A:ArrayList,底层采用数组结构的实现的。(内存中连续空间)。jdk1.2
只实现了List接口,功能都是List接口中规定的。
优缺点:
优点:遍历访问元素,效率很高
缺点:插入或删除元素,效率相对低。
B:LinkedList,底层采用双向链表结构实现的。(元素在内存中不挨着,元素之间的指向)。jdk1.2
实现了List接口的同时,还实现了Deque接口,所以有这两个接口中的功能。
优缺点:
优点:插入或删除元素,效率很高。
缺点:遍历访问元素,效率相对低。
注意点:
如果一个集合,频繁的添加或删除元素,建议选择LinkedList。
如果一个集合,绝大多数的操作就是遍历查询,建议选择ArrayList。
如果要模拟栈,队列等结构,建议选择LinkedList。
C:Vector,是ArrayList的前身。也是数组的结构。古老的类。从jdk1.0的版本就有了。
线程安全,效率低,后来被ArrayList替代了。
ArrayList和LinkedList都是线程不安全的,效率高。Collections工具类,可以获取线程安全的集合。