Java 集合之Collection 和 Iterator接口
Java 集合可用于存储数量不等的对象,实现常用的数据结构,如栈,队列等。
此外,Java 集合还可用于保存具有映射关系的关联数组。
Java 集合可大致分为:Set、List、Queue、和Map 四种体系。
- Set:代表无序,不可重复的集合
- List:有序、重复的集合
- Map:具有映射关系的集合
- Queue:队列集合Java集合
Java集合可以视为一种容器,可以把多个对象(实际上是对象的引用)丢进容器。
在Java 5之前,Java 集合会丢失容器所有对象的数据类型,把所有对象当成 Object 类型来处理,Java 5之后,增加了泛型以后,Java集合可以记住容器中对象的数据类型,从而编写更简洁、健壮的代码。
本文包含:
- 使用Lambda 表达式遍历集合
- 使用 Java 8增强的 Iterator 遍历集合元素
- 使用 Lambda 表达式遍历Iterator
- 使用 foreach 循环遍历集合元素
- 使用Java 8 新增的Predicate 操作集合
- 使用 Java 8 新增的Stream 操作集合
所有集合类都位于 java.util 包下。
集合和数组的区别:
- 数组元素既可以是基本类型值,也可以是对象(实际上保存对象的引用)
- 集合只能保存对象(实际上是对象的引用变量)
Java 集合类主要由两个接口派生出来:Collection 和 Map,这两个接口又包含了一些子接口以及实现类
下图是其接口、子接口及其实现类的继承树
下面是 Map 体系的继承树
Collection 和 Iterator 接口
Collection 接口一般有如下方法:
//添加方法:
add(Object o) //添加指定元素
addAll(Collection c) //添加指定集合
//删除方法:
remove(Object o) //删除指定元素
removeAll(Collection c) //输出两个集合的交集
retainAll(Collection c) //保留两个集合的交集
clear() //清空集合
//查询方法:
size() //集合中的有效元素个数
toArray() //将集合中的元素转换成Object类型数组
//判断方法:
isEmpty() //判断是否为空
equals(Object o) //判断是否与指定元素相同
contains(Object o) //判断是否包含指定元素
containsAll(Collection c) //判断是否包含指定集合
1. 使用Lambda 表达式遍历集合
上面程序粗体字调用了Iterable 的 forEach() 方法来遍历集合元素,传给该方法的参数是一个 Lambda 表达式,该表达式的类型是一个 Comsumer 。forEach() 方法会自动将集合元素逐个传给 Lambda 表达式的形参。
2. 使用 Java 8 增强的 Iterator 遍历集合元素
Iterator 接口定义如下四个方法:
Iterator 仅用于遍历集合,其本身不提供盛装对象的能力。
3. 使用Lambda 表达式遍历 Iterator
4. 使用 foreach 循环遍历集合元素
5. 使用 Java 8 新增的Predicate 操作集合
6. 使用 Java 8 新增的 Stream 操作集合
Stream 流的中间方法和末端方法
关于流的方法有如下两个特征:
Stream 常用的中间方法
Stream 流常用的末端方法
使用Stream 来改写上面包含 calAll() 方法的程序: