Java 的 Collection 笔记
Collection 接口概述
集合分类
List系列集合:添加的元素是有序、可重复、有索引的
Set系列集合:添加的元素是无序、不重复、无索引的
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的
创建Collection对象
Collecion是一个接口,我们不能直接创建他的对象
所以,现在我们学习他的方法时,只能创建他的实现类对象
实现类:ArrayList
目的:为了学习Collection接口里面的方法
所以利用多态的方式来创建对象
1
| Collection<String> coll = new ArrayList<>();
|
Collection 常用方法
基本操作方法
| 方法 |
说明 |
返回值 |
add(E e) |
添加元素到集合 |
boolean |
clear() |
清空集合所有元素 |
void |
remove(E e) |
删除指定元素 |
boolean |
contains(Object obj) |
判断是否包含元素 |
boolean |
isEmpty() |
判断集合是否为空 |
boolean |
size() |
获取集合元素个数 |
int |
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class CollectionMethods { public static void main(String[] args) { Collection<String> coll = new ArrayList<>();
coll.add("aaa"); coll.add("bbb"); coll.add("ccc"); System.out.println("添加后: " + coll);
boolean containsResult = coll.contains("aaa"); System.out.println("是否包含aaa: " + containsResult);
boolean removeResult = coll.remove("aaa"); System.out.println("删除aaa: " + removeResult); System.out.println("删除后: " + coll);
boolean emptyResult = coll.isEmpty(); System.out.println("集合是否为空: " + emptyResult);
int size = coll.size(); System.out.println("集合大小: " + size);
coll.clear(); System.out.println("清空后: " + coll); } }
|
Collection 遍历方式
1. 迭代器遍历 (Iterator)
核心方法
| 方法 |
说明 |
Iterator<E> iterator() |
返回迭代器对象 |
boolean hasNext() |
判断是否有下一个元素 |
E next() |
获取当前元素并移动指针 |
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class IteratorDemo { public static void main(String[] args) { Collection<String> coll = new ArrayList<>(); coll.add("aaa"); coll.add("bbb"); coll.add("ccc"); coll.add("ddd");
Iterator<String> it = coll.iterator();
while(it.hasNext()) { String str = it.next(); System.out.println(str); } } }
|
迭代器注意事项
- 越界异常:指针指向末尾时调用
next()会抛出NoSuchElementException
- 指针不复位:遍历结束后指针不会重置,需要重新获取迭代器
- 单次next:循环中只能调用一次
next()方法
- 禁止修改:迭代过程中不能用集合方法增删元素
2. 增强for循环 (Enhanced For)
语法格式
1 2 3
| for(数据类型 变量名 : 集合/数组) { }
|
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class EnhancedForDemo { public static void main(String[] args) { Collection<String> coll = new ArrayList<>(); coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu");
for(String s : coll) { System.out.println(s); } } }
|
增强for特点
- 底层原理:基于迭代器实现
- 简化代码:比迭代器写法更简洁
- JDK版本:JDK5+ 支持
- 适用范围:所有单列集合和数组
- 变量特性:循环变量是第三方变量,修改不影响原集合
3. Lambda表达式遍历
核心方法
1
| default void forEach(Consumer<? super T> action)
|
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class LambdaDemo { public static void main(String[] args) { 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); } });
coll.forEach((String s) -> { System.out.println(s); });
coll.forEach(s -> System.out.println(s)); } }
|
方法细节说明
add() 方法细节
List系列集合:永远返回true
Set系列集合:元素不存在返回true,存在返回false(不允许重复)
contains() 方法细节
底层使用equals方法判断
自定义对象需要重写equals方法
总结对比
| 遍历方式 |
优点 |
缺点 |
适用场景 |
| 迭代器 |
功能完整,可删除元素 |
代码相对复杂 |
需要删除元素时 |
| 增强for |
语法简洁,易读性好 |
不能修改集合 |
简单的遍历操作 |
| Lambda |
代码简洁,函数式编程 |
JDK8+支持 |
现代Java开发 |
提示:根据具体需求选择合适的遍历方式,增强for在日常开发中使用最频繁。如果觉得文章有用的话,请我喝杯咖啡吧~( •̀ ω •́ )✧

微信

支付宝
点击下方按钮可跳转到专属打赏页面,有感谢名单哦~