Java 集合之Collection 和 Iterator接口

Java 集合可用于存储数量不等的对象,实现常用的数据结构,如栈,队列等。
此外,Java 集合还可用于保存具有映射关系的关联数组。
Java 集合可大致分为:Set、List、Queue、和Map 四种体系。

  1. Set:代表无序,不可重复的集合
  2. List:有序、重复的集合
  3. Map:具有映射关系的集合
  4. Queue:队列集合Java集合

Java集合可以视为一种容器,可以把多个对象(实际上是对象的引用)丢进容器。
在Java 5之前,Java 集合会丢失容器所有对象的数据类型,把所有对象当成 Object 类型来处理,Java 5之后,增加了泛型以后,Java集合可以记住容器中对象的数据类型,从而编写更简洁、健壮的代码。

本文包含:

  1. 使用Lambda 表达式遍历集合
  2. 使用 Java 8增强的 Iterator 遍历集合元素
  3. 使用 Lambda 表达式遍历Iterator
  4. 使用 foreach 循环遍历集合元素
  5. 使用Java 8 新增的Predicate 操作集合
  6. 使用 Java 8 新增的Stream 操作集合

所有集合类都位于 java.util 包下。
集合和数组的区别:

  • 数组元素既可以是基本类型值,也可以是对象(实际上保存对象的引用)
  • 集合只能保存对象(实际上是对象的引用变量)

Java 集合类主要由两个接口派生出来:Collection 和 Map,这两个接口又包含了一些子接口以及实现类
下图是其接口、子接口及其实现类的继承树
Java 集合之Collection 和 Iterator接口
下面是 Map 体系的继承树
Java 集合之Collection 和 Iterator接口

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 表达式遍历集合

Java 集合之Collection 和 Iterator接口
上面程序粗体字调用了Iterable 的 forEach() 方法来遍历集合元素,传给该方法的参数是一个 Lambda 表达式,该表达式的类型是一个 Comsumer 。forEach() 方法会自动将集合元素逐个传给 Lambda 表达式的形参。

2. 使用 Java 8 增强的 Iterator 遍历集合元素

Iterator 接口定义如下四个方法:
Java 集合之Collection 和 Iterator接口
Iterator 仅用于遍历集合,其本身不提供盛装对象的能力。
Java 集合之Collection 和 Iterator接口Java 集合之Collection 和 Iterator接口Java 集合之Collection 和 Iterator接口

3. 使用Lambda 表达式遍历 Iterator

Java 集合之Collection 和 Iterator接口

4. 使用 foreach 循环遍历集合元素

Java 集合之Collection 和 Iterator接口

5. 使用 Java 8 新增的Predicate 操作集合

Java 集合之Collection 和 Iterator接口Java 集合之Collection 和 Iterator接口

6. 使用 Java 8 新增的 Stream 操作集合

Java 集合之Collection 和 Iterator接口Java 集合之Collection 和 Iterator接口
Stream 流的中间方法和末端方法
Java 集合之Collection 和 Iterator接口
关于流的方法有如下两个特征:
Java 集合之Collection 和 Iterator接口
Stream 常用的中间方法
Java 集合之Collection 和 Iterator接口
Stream 流常用的末端方法
Java 集合之Collection 和 Iterator接口
Java 集合之Collection 和 Iterator接口
Java 集合之Collection 和 Iterator接口
使用Stream 来改写上面包含 calAll() 方法的程序:
Java 集合之Collection 和 Iterator接口