1、数组
主方法进栈,发现student,然后加载进内存
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115134707-890893961.png)
2、集合的由来
集合只能存储引用数据类型;在存储基本数据类型时会自动装箱变成对象
部分集合的底层也是由数组实现的;比较浪费内存
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115135363-128136171.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115136629-1840629134.png)
3、Collection类
接口,不能直接创建对象
add(E e)可以添加任何对象,返回值boolean(ArrayList都返回true,且重写了toString方法)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115136972-1482114723.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115139160-526732191.png)
remove(E e)删除指定元素
clear()清空
boolean contains(E e)判断是否包含某元素
boolean isEmpty()判断是否为空
int size()获取集合中元素的个数
4、集合的遍历
集合的遍历要先转成数组
toArray()方法
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115139691-2036620653.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115141769-1290418720.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115142363-871972697.png)
5、collection的带all功能测试
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115143722-458714818.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115144457-102311908.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115145535-442714085.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115146160-1606784937.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115146785-1890102096.png)
**removeAll()方法删除的是两个集合的交集
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115147832-1081271480.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115149285-1958451257.png)
有重复的是true,但必须保证都是一样的
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115149847-447251566.png)
retainAll()方法:取两个集合的交集:c1改变就返回true,c1没变就返回false
6、迭代器遍历
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115150519-135139524.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115151254-1621228922.png)
7、迭代器的原理 ![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115153207-2038164012.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115153207-2038164012.png)
8、List集合特有功能概述
特有的方法:
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115153863-730992375.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115154613-354997437.png)
add(index,element)在指定位置添加元素:如果index超过已有的集合长度,会出现索引越界异常
index<=size
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115157754-1672354442.png)
E remove(index)删除指定位置元素,并返回该元素的object对象
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115159097-502404906.png)
E get(index)根据索引获取该位置元素
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115200410-941218250.png)
通过索引遍历List集合,只有list集合才可以采用这种方法
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115201410-121080323.png)
set(index,element)将指定位置的元素修改
9、List集合中存储学生对象并遍历
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115201988-497211840.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115203066-855714429.png)
10、并发修改异常产生的原因及解决方法
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115203410-627916795.png)
并发修改:在遍历的同时再增加元素
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115204801-343599982.png)
11、ListIterator
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115205754-1946685824.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115207426-690770660.png)
hasPrevious()判断的是上一个,若hasNext被注释掉,那么指针指在0位置上,所以没有前一个
12、Vector的特有功能
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115208097-1355682085.png)
13、数据结构之数组和链表
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115208738-1618338403.png)
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115209426-952043447.png)
****数组:根据索引查找速度快,增删都需要移位,所以比较慢
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115211769-1719326242.png)
****链表:查找需要从头或者从尾一个个找,或者根据索引判断距离头和尾哪个更近,再一个个找,所以慢
但是增删不需要移位,只需要地址修改地址引用即可
14、List三个子类的特点:
![](https://images2015.cnblogs.com/blog/1157070/201705/1157070-20170511115213097-1986779928.png)