集合输出实际上从JDK 1.8开始就在Iterable接口之中提供有一个forEach()方法,但是这种方法的输出并不是传统意义上的集合输出形式,并且也很难在实际的开发之中出现,对于集合操作而言,一共有四种输出形式:Iterator迭代输出、ListIterator双向迭代输出、Enumeration枚举输出、foreach输出。
1 Iterator迭代输出
通过Collection接口的继承关系可以发现,从JDK 1.5开始其多继承了一个Iterable父接口,并且在这个接口里面定义有一个Iterator()操作方法,通过此方法可以获取Iterator接口对象(在JDK 1.5之前,这一方法直接定义在Collection接口之中)。
(1)获取Iterator接口对象:Iterator<T> iterator()
在Iterator接口里面定义有如下的方法:
(1)判断是否有数据:boolean hasNext()
(2)取出当前数据:E next()
(3)删除当前数据:default void remove()
在之前使用的java.util.Scanner类就是Iterator接口的子类,所以此时类继承关系如下:
范例:使用Iterator输出
package org.lks.demo;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class JavaReflectDemo {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("Hello");
set.add("World");
set.add("lks");
Iterator<String> iter = set.iterator();
while(iter.hasNext()) {
String str = iter.next();
System.out.println(str);
}
}
}
但是对于Iterator接口中的remove()方法的使用需要特别注意一下(如果不是必须不要使用)。实际上在Collection接口里面定义有数据的删除操作方法,但是在进行迭代输出的过程里面如果你使用了Collection中的remove()方法会导致迭代失败。
范例:采用Collection集合中的remove()方法删除
package org.lks.demo;
import java.util.HashSet;
import java.util.Iterator;