Collection系列集合、Map系列集合主要用于盛装其他对象,而 Iterator则主要用于遍历〈即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
遍历集合的方法:
一:使用forEach(Consumer action)默认方法
Java 8为Iterable接口新增了一个forEach(Consumer action)默认方法,该方法所需参数的类型是一 个函数式接口,而Iterable接口是Collection接口的父接口,因此Collection集合也可直接调用该方法
二: 使用Iterator接口
Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的统一编程接口。
定义的方法:
1. boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回true。
2. Object next():返回集合里的下一个元素。
3. void remove():删除集合里上一次next方法返回的元素。
4. void forEachRemaining(Consumer action),这是Java 8为lterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素
当使用Iterator 迭代访问Collection 集合元素时,Collection 集合里的元素不能被改变,只有通过 Iterator的remove0方法删除上一次next0方法返回的集合元素才可以;否则将会引发java.util.Concurrent ModificationException异常。
三:使用forEachRemaining(Consumer action)方法
Java 8为Iterator新增了一个forEachRemaining(Consumer action)方法,该方法所需的Consumer参 数同样也是函数式接口。当程序调用Iterator的forEachRemaining(Consumer action)遍历集合元素时,程序会依次将集合元素传给Consumer的accept(T t)方法( 该接口中唯一的抽象方法)。
四:使用foreach循环遍历集合
五.使用Predicate操作集合
Java 8为Collection集合新增了一个个removelf(Predicate filter)方法,该方法将会批量删除符合filter 条件的所有元素。该方法需要一个Predicate (谓词)对象作为参数,Predicate 也是函数式接口,因此可 使用Lambda表达式作为参数。removeIf,删除符合条件的数据,条件通过实现Predicate 的方法来创造。