Java复习Day21
Java集合类框架
1. ArrayList
概述
- Collection:List和Set的父接口,定义了集合共用的方法
- List:有序且元素可重复的接口
- ArrayList:List的实现类,底层采用数组结构
遍历方式
支持多种循环遍历方式
常用方法
- add(Object obj):在集合末尾添加元素,返回boolean值表示是否成功
- add(int index,Object obj):在指定索引位置前插入元素
- size():获取集合元素数量
- isEmpty():判断集合是否为空
- clear():清空集合所有元素
- addAll(Collection c):添加另一个集合的元素(需泛型相同)
- addAll(int index,Collection c):在指定位置前添加另一个集合的元素
- remove(int index):移除指定位置的元素并返回该元素
- remove(Object obj):移除指定的元素(只移除第一个匹配项),返回boolean值表示是否成功
- removeAll(Collection c):移除当前集合中与参数集合相同的所有元素
- retainAll(Collection c):保留当前集合中与参数集合相同的元素
- contains(Object o):判断集合是否包含指定元素
- containsAll(Collection c):判断是否包含参数集合的所有元素
- toArray():返回包含所有元素的对象数组(正序)
- indexOf(Object):返回元素首次出现的索引
- lastIndexOf(Object):返回元素最后一次出现的索引
- subList(int from,int to):截取集合(包含from,不包含to),返回新List
- iterator():获取集合迭代器
- listIterator():获取List专用迭代器
- set(int index,Object obj):替换指定位置的元素
2. Iterator和ListIterator比较
区别
- 适用范围:
- Iterator:可遍历List和Set
- ListIterator:仅能遍历List
- 遍历方向:
- Iterator:单向(向后)
- ListIterator:双向(向前/向后)
- 继承关系:
- ListIterator继承Iterator并扩展了新方法
常用方法
- add(E e):在迭代器当前位置前插入元素
- hasNext():判断是否存在后续元素
- next():返回下一个元素
- nextIndex():返回下一个元素的索引
- hasPrevious():判断是否存在前驱元素
- previous():返回前一个元素
- previousIndex():返回前一个元素的索引
- set(E e):替换当前迭代位置的元素
3. remove操作注意事项
- 循环处理原则:集合增删操作必须使用迭代器,不能使用foreach
- 特例情况:foreach仅能安全删除倒数第二个元素
- 实现原理:foreach底层通过迭代器实现
- 迭代器操作步骤:
iterator.hasNext()
item=iterator.next()
(包含迭代器删除操作的源码实现)