目录
[1.1 add(int index, E element):在指定位置插入元素。](#1.1 add(int index, E element):在指定位置插入元素。)
[1.2 remove(int index) 删除指定索引的元素,并返回被删除的元素。](#1.2 remove(int index) 删除指定索引的元素,并返回被删除的元素。)
[1.3 set(int index, E element) 修改指定索引的元素,并返回被修改前的元素。](#1.3 set(int index, E element) 修改指定索引的元素,并返回被修改前的元素。)
[1.4 get(int index) 获取指定索引的元素。](#1.4 get(int index) 获取指定索引的元素。)
[2.1 迭代器 Iterator](#2.1 迭代器 Iterator)
[2.2 增强 for](#2.2 增强 for)
[2.3 Lambda 表达式 forEach](#2.3 Lambda 表达式 forEach)
[2.4 普通 for 循环](#2.4 普通 for 循环)
[2.5 列表迭代器 ListIterator](#2.5 列表迭代器 ListIterator)
List 是单列集合里非常常用的一类。特点是:有序、可重复、有索引。
常见实现类:ArrayList、LinkedList。
java
List<User> users = new ArrayList<>();
一.List集合的特有方法
- List 继承了 Collection 的所有方法,如add(E e),remove(Object o),contains(Object o),clear(),size(),isEmpty()
- List集合因为自己有索引,所以多了一些带索引操作的方法。
| 方法名称 | 说明 |
|---|---|
| voidadd(int index, E element) | 在此集合中的指定位置插入指定的元素 |
| Eremove(int index) | 删除指定索引处的元素,返回被删除的元素 |
| Eset(int index, E element) | 修改指定索引处的元素,返回被修改的元素 |
| E get(int index) | 返回指定索引处的元素 |
**1.1 add(int index, E element):**在指定位置插入元素。
java
List<String> list = new ArrayList<>();
list.add("张三");
list.add("王五");
// 在索引 1 的位置插入 李四
list.add(1, "李四");
System.out.println(list);//[张三, 李四, 王五]
**注意:**索引不能越界。
1.2 **remove(int index)**删除指定索引的元素,并返回被删除的元素。
java
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
String removed = list.remove(1);
System.out.println("被删除的是:" + removed);//被删除的是:李四
1.3 **set(int index, E element)**修改指定索引的元素,并返回被修改前的元素。
java
String old = list.set(1, "王五");
System.out.println("被修改前的是:" + old);//被修改前的是:李四
1.4 **get(int index)**获取指定索引的元素。
java
System.out.println(list.get(0));
二.List集合的遍历方式
- 迭代器遍历(继承Collection)
- 列表迭代器遍历
- 増强for遍历(继承Collection)
- Lambda表达式遍历(继承Collection)
- 普通for循环(因为List集合存在索引)
我们准备一个集合:
java
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
2.1 迭代器 Iterator
适合遍历时删除元素。
java
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String name = it.next();
System.out.println(name);
}
2.2 增强 for
适合只读取元素。增强 for 里不要直接修改集合结构,比如添加、删除元素。
java
for (String name : list) {
System.out.println(name);
}
2.3 Lambda 表达式 forEach
java
list.forEach(name -> System.out.println(name));
2.4 普通 for 循环
使用size方法 和get方法 还有循环结合 的方式,利用索引获取到集合中的每一个元素。
适合需要索引的场景。
java
for (int i = 0; i < list.size(); i++) {
String name = list.get(i);
System.out.println(name);
}
2.5 列表迭代器 ListIterator
ListIterator是Iterrator的子接口。
ListIterator 是 List 特有的迭代器。
它比普通 Iterator 更强,可以:
- 从前往后遍历
- 从后往前遍历
- 遍历时添加元素
- 遍历时修改元素
正向遍历:
java
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
String name = it.next();
System.out.println(name);
}
反向遍历:
java
ListIterator<String> it = list.listIterator(list.size());
while (it.hasPrevious()) {
String name = it.previous();
System.out.println(name);
}
遍历时添加元素:
java
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
String name = it.next();
if ("李四".equals(name)) {
it.add("赵六");
}
}
System.out.println(list);//[张三, 李四, 赵六, 王五]
三.List集合五种遍历方式对比
