集合
- 就是一个容器
- 特点:
- 集合容器长度可变
- 同一个集合容器可以装不同的东西
- 只能装 引用数据类型 的数据
集合和数组的区别
+ 数组长度不可变;集合长度可变
+ 同一数组只能装一种数据类型的东西;同一集合可以装多种数据类型的数据
+ 数组既可以装基本数据类型的数据,也可以装引用数据类型的数据;集合只能装引用数据类型的数据
集合的体系结构
Collection
- 单列集合顶层接口
- List 子接口 — 可重复
- ArrayList 实现类
- LinkedList 实现类
- Vector 实现类
- Set 子接口 — 不可重复
- HashSet 实现类
- TreeSet 实现类
- LinkedHashSet 实现类
Map
Collection
- 是单列集合的顶层接口,表示一组对象,这些对象也称作Collection的元素
- JDK 不提供此接口的任何直接实现,它提供更具体的子接口实现
创建Collection 集合的对象
Collection 集合常用方法
方法名 | 说明 |
boolean add(E e) | 添加 元素 |
boolean remove(Object obj) | 从集合中 删除 指定的元素 |
boolean removeif(Predicate p) | 从集合中 删除 指定的 1个或多个 元素 |
void clear() | 清空 集合中的元素 |
boolean contains(Object obj) | 判断集合中是否 存在 指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,即集合中元素的个数 |
+ 数组对象.length
+ 字符串.length()
+ 集合对象.size()
### Collection 集合的遍历
#### 迭代器遍历 Iterator
+ Iterator:迭代器,集合的专用遍历方式
+ iterator< E > iterator():
+ 返回此集合中元素的迭代器,通过iterator()方法得到
+ 迭代器是通过集合的iterator()方法得到的,所以说他是依赖于集合而存在的
+ Iterator 中的常用方法
+ boolean hasNext()
+ 若迭代有更多元素,返回true
+ E next()
+ 返回迭代的下一个元素
+ Example
Colleaton c = new ArrayList();
Iterator it = c.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
增强 for 循环
for(数据类型 变量名: 容器名){
}
- 增强for循环可以遍历容器,也可以遍历数组
- 增强for循环底层使用的是 迭代器
并发修改异常
- ConcurrentModificationException
- 产生原因
- 迭代器遍历过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致
- 解决方案
- 用for循环遍历,然后用集合对象做对应的操作即可
- 也可以直接用迭代器修改集合中元素的长度
ListIterator 列表迭代器
- 通过List集合的listIterator()方法得到,是List集合特有的迭代器
- 用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置
常用方法
方法名 | 说明 |
E next() | 返回迭代中的下一个元素 |
boolean hasNext() | 如果迭代具有更多元素,返回true |
E previous() | 返回列表中的上一个元素 |
boolean hasPrevious() | 如果迭代在相反方向上具有更多元素,返回true |
void add(E e) | 将指定元素插入列表 |
## List
### List集合的特点
+ 有序(存入顺序和取出顺序是一致的)
+ 可重复
+ 有索引
### List集合的两个儿子
+ ArrayList
+ LineList
### List集合中特有的方法
方法名 | 说明 |
public void add(int index,E e) | 往指定索引处 添加 元素 |
public boolean remove(Object obj) | 从集合中 删除 指定的元素 |
public Object remove(int index) | 从集合中 删除 指定位置的元素,并返回被删除的那个元素 |
public Object set(int index,E e) | 将指定位置的元素 设置为 e,并返回被修改的那个元素 |
public E get(int index) | 返回指定位置的元素 |
### List 集合的遍历
+ 迭代器
+ 增强for循环
+ 普通for循环(size() 和 get())
数据结构
栈
队列
数组
LinkedList
LinkedList的特有方法
方法名 | 说明 |
public void addFirst(E e) | 添加 元素到第一个位置 |
public void addLast(E e) | 添加 元素到最后一个位置 |
public Object getFirst() | 获取第一个位置的元素 |
public Object getLast() | 获取最后一个位置的元素 |
public Object removeFirst() | 删除第一个位置的元素 |
public Object removeLast() | 删除最后一个位置的元素 |
## 泛型
### 格式:,