1.集合与数组
- 都是容器,可以存储多个数据
- 数组可以存储基本数据类型和引用数据类型,长度不可变
- 集合只能存储引用数据类型,长度可变
- 集合如果要存基本数据类型,需要存对应的包装类
集合类体系结构图

2.Collection集合
是单列集合的顶层接口,表示一组对象,这些对象称为Collection的元素
创建Collection集合的方式:
- 多态的方式
- 具体的实现类(如ArrayList)
Collection集合的常用方法有以下这些:
| 方法 | 解释说明 |
| boolean add(E e) | 添加元素 |
| boolean remove(Object o) | 移除指定元素 |
| void clear() | 清空元素 |
| boolean contains(Object o) | 判断是否存在指定的元素 |
| boolean isEmpty() | 判断集合是否为空 |
| int size() | 元素个数/集合长度 |
| boolean removeIf(Object o) | 根据条件进行移除 |
3.Collection集合的遍历
3.1迭代器遍历
迭代器遍历是集合的专用遍历方式,位于java.util包中
核心方法:
- boolean hasNext():判断集合中是否还有下一个元素
- E next():返回下一个元素,并将迭代器指针向后移动一位
示例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class A03_CollectionDemo3 {
public static void main(String[] args) {
//迭代器遍历
Collection<String> coll = new ArrayList<>();
//2.添加元素
coll.add("aa");
coll.add("bb");
coll.add("cc");
coll.add("dd");
//3.获取迭代器对象
//迭代器默认指向集合的0索引处
Iterator<String> it = coll.iterator();
//4.利用循环不断地获取集合中的每一个元素
//调用next()前必须检查hasNext()
while (it.hasNext()) {
//获取元素并移动指针
String str = it.next();
if("bb".equals(str)){
it.remove();
}
}
System.out.println(coll);
}
}
迭代器中有删除的方法:void remove()
迭代器是单向的,只能向前移动。
3.2增强for遍历
是JDK5之后出现的,底层是一个Iterator迭代器
格式:
for(集合或数组中元素的数据类型 变量名:集合或数组名) {
}
示例:
import java.util.ArrayList;
import java.util.Collection;
public class A04_CollectionDemo4 {
public static void main(String[] args) {
//增强for遍历
Collection<String> coll = new ArrayList<>();
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");
for(String s:coll){
System.out.println(s);
}
//快速生成:集合名+for 回车
//s只是第三方变量
//在循环过程中,s依次表示集合中的每一个元素
for (String s : coll) {
System.out.println(s);
}
}
}
String[] array = {"A", "B", "C"};
Arrays.stream(array).forEach(System.out::println);
3.3lambda表达式
Lambda 表达式利用forEach方法,可以简化集合的遍历操作
示例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
public class A05_CollectionDemo5 {
public static void main(String[] args) {
//lambda表达式遍历
Collection<String> coll = new ArrayList<>();
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");
//先用匿名内部类的方式遍历
/*coll.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
*/
//lambda表达式遍历
coll.forEach( s-> System.out.println(s));
}
}
4.List集合
从上面的集合类体系结构图可以看出,List 集合与 Collection 集合是继承关系,List 是 Collection 的子接口,继承了 Collection 的所有方法。
List集合的特点:存取有序(存取的顺序有序)、可重复、有索引
List集合的特有方法:
| 方法名 | 说明 |
| void add(int index ,E element) | 在集合指定位置插入指定元素 |
| E remove(int index) | 删除指定位置的元素并返回被删除的元素 |
| E set(int index,E element) | 修改指定位置元素并返回被修改的元素 |
| E get(int index) | 返回引处的元素指定索 |
List集合的遍历方式,有以下五种:
- 迭代器遍历
- 增强for遍历
- lambda表达式
- 普通for循环
- 列表迭代器遍历
5.列表迭代器遍历:
ListIterator(列表迭代器)是 Iterator 的子接口,专门用于遍历 List 集合(如 ArrayList、LinkedList 等)。它不仅支持向前遍历,还能向后遍历,并且可以在遍历过程中修改集合元素(添加、删除、替换),功能比普通 Iterator 更强大。
列表迭代器的核心方法:
- boolean hasNext():判断是否有下一个元素(向前遍历),有则返回
true - E next():返回下一个元素,并将迭代器指针向后移动一位
- boolean hasPrevious():判断是否有上一个元素(向后遍历),有则返回
true - E previous():返回上一个元素,并将迭代器指针向前移动一位
- int nextIndex():返回下一个元素的索引(若没有下一个元素,返回集合大小
size()) - int previousIndex():返回上一个元素的索引(若没有上一个元素,返回
-1) - void remove():删除迭代器最后一次返回的元素(
next()或previous()调用的元素) - void set(E e):用指定元素替换迭代器最后一次返回的元素(
next()或previous()调用的元素) - void add(E e):在当前迭代器指针位置插入指定元素
列表迭代器代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
//1.获取 ListIterator(默认从索引0开始)
ListIterator<String> iterator = list.listIterator();
// 2. 向前遍历(从前往后)
while (iterator.hasNext()) {
//获取下一个元素的索引
int index = iterator.nextIndex();
//获取下一个元素
String element = iterator.next();
System.out.println("索引 " + index + ":" + element);
}
// 3. 向后遍历(从后往前,此时指针已在集合末尾)
while (iterator.hasPrevious()) {
int index = iterator.previousIndex();
String element = iterator.previous();
System.out.println("索引 " + index + ":" + element);
}
//4.遍历中修改元素(替换、添加、删除)
ListIterator<String> iterator2 = list.listIterator();
while (iterator2.hasNext()) {
String element = iterator2.next();
if (element.equals("B")) {
//替换元素
iterator2.set("D");
} else if (element.equals("C")) {
//插入元素
iterator2.add("E");
}
}
//5.删除元素
ListIterator<String> iterator3 = list.listIterator();
while (iterator3.hasNext()) {
String element = iterator3.next();
if (element.equals("A")) {
iterator3.remove();
}
}
System.out.println(list);
}
}
注意:void set(E e)和void remove()方法只能在调用 next() 或 previous() 后才能使用

被折叠的 条评论
为什么被折叠?



