概述
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
Collection将集合划分为两大类:
- List集合
- Set集合
List接口的特点
-
有序【存储有序】
-
可重复
-
可以存储
null
值 -
部分子集合线程安全,部分不安全 例如
ArrayList
和Vector
-
有索引,针对每个元素能够方便地查询和修改
-
判断元素是否重复依赖于
equals
方法a. 如果元素是系统类,不需要重写
equals
方法b. 如果是自定义类,就需要我们按需求重写
equals
方法
List接口的常用方法
增加
void add(int index, E element)
//在指定 index 索引处理插入元素 element
boolean addAll(int index, Collection<? extends E> c)
//在指定 index 索引处理插入集合元素 c
删除
E remove(int index)
//删除指定索引 index 处的元素
修改
E set(int index, E element)
//修改指定索引 index 处的元素为 element
遍历
E get(int index) + int size()
//for循环遍历集合中的每一个元素
ListIterator<E> listIterator()
//通过列表迭代器遍历集合中的每一个元素
ListIterator<E> listIterator(int index)
//通过列表迭代器从指定索引处开始正向或者逆向遍历集合中的元素
获取
E get(int index)
//获取指定索引处的元素
int indexOf(Object o)
//从左往右查找,获取指定元素在集合中的索引,如果元素不存在返回 -1
int lastIndexOf(Object o)
//从右往左查找,获取指定元素在集合中的索引,如果元素不存在返回 -1
List<E> subList(int fromIndex, int toIndex)
//截取从 fromIndex 开始到 toIndex-1 处的元素
List接口的遍历方式
-
toArray
-
Iterator
-
foreach
-
普通for
-
ListIterator
List接口去除重复元素
方式一:创建一个新的集合去除重复元素再使用地址传递
方式二:在原集合的基础上使用选择排序思想去除重复元素
List<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("李四");
list.add("李四");
list.add("王五");
for (int i = 0; i < list.size(); i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i).equals(list.get(j))) {
list.remove(j);
j--;
}
}
}
并发修改异常的处理
异常名称:并发修改异常 java.util.ConcurrentModificationException
产生原因:在使用迭代器迭代的同时使用原集合对元素做了修改
解决办法:
-
使用 toArray 方法
-
使用 普通 for 遍历
-
使用 ListIterator 遍历集合并且使用 列表迭代器修改元素
以上
@Fzxey