一. Collection接口和常用方法
- Collection接口遍历元素方式1-使用Iterator(迭代器)
- Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
- 所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器.
- Iterator仅用于遍历集合,Iterator本身并不存放对象
在调用iterator.next()方法之前必须要调用iterator.hasNext()进行检测.若不调用,且下一条记录无效,直接调用it.next()会抛出异常
- for循环增强
增强for循环,可以替代iterator迭代器,特点:增强for就是简化版的iterator,本质一样,只能用于遍历集合或数组
1. List接口和常用方法
- List集合类中元素有序(即添加顺序和取出顺序一致),且可重复
- List集合中的每个元素都有其对应的顺序索引,即支持索引
- List集合中的每个元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素.
1.1 ArrayList底层结构和源码分析
- ArrayList中维护了一个Object类型的数组elementData
- 当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如需再次扩容,则扩容elementData为1.5倍
- 如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如需扩容,则直接扩容elementData为1.5倍
1.2 Vector底层结构和源码剖析
- Vector底层也是一个对象数组
- Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized
- 在开发中,需要线程同步安全时,需要考虑使用Vector
- 如果是无参,默认10,满后,就按2倍扩容.如果指定大小,则每次直接按2倍扩
1.3 LinkedList底层结构
- LinkedList底层实现了双向链表和双端队列特点
- 可以添加任意元素(元素可以重复),包括null
- 线程不安全,没有实现同步
1.4 List选择

2. Set接口和常用方法
- 无序(添加和取出的顺序不一致),没有索引
- 不允许重复元素,所以最多包含一个null
2.1 HashSet全面说明
- HashSet实现了Set接口
- HashSet实际上是HashMap
- 可以存放null值,但是只能有一个null
- HashSet不保证元素是有序的,取决于hash后,再确定索引的结果
- 不能有重复元素/对象
二. Map接口和常用方法
- Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
- Map中的key不允许重复
- Map中的value可以重复
- Map的key可以为null,value也可以为null,注意key为null,只能有一个,value为null,可以为多个
- key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value