Java集合的四种输出操作形式
Collection、List、Set三个接口中只有List接口是最方便进行输出操作,集合在jdk1.8之前支持四种输出,之后支持5种输出。
- Iterator
- ListIterator
- Enumeration
- foreach
Iterator是用到最多的,Enumeration也是很关键的,虽然用的较少。
迭代输出:Iterator
一般来说,遇到集合操作就用Iterator接口进行集合的输出操作。Iterator本身是一个接口,定义中也增加了泛型操作。定义如下:
public interface Iterator<E>{
public boolean hasNext();
public E next();
}
之前使用的Scanner就是Iterator的子类,因为Iterator本身是一个接口,要想取得本接口实例化,只能依靠Collection接口。
- 所有实现Collection接口的容器类都有一个Iterator方法,用于返回一个实现了Iterator接口的对象
- Iterator对象成为迭代器,用来实现对容器内元素的遍历操作。
- Iterator接口定义了三个方法
- hasNext()
- next()
- remove()
双向迭代输出ListIterator
Iterator只能是从前向后迭代输出,如果想要双向的迭代输出,可以使用ListIterator。但是,ListIterator的使用是有前提的:
**在进行由后向前的输出之前必须要先进行由前向后的输出**,要不然输出的结果是空。
public class TestList {
public static void main(String[] args) throws Exception{
List<String> all = new ArrayList<String >();
all.add("A");
all.add("B");
all.add("C");
ListIterator<String> it = all.listIterator();
System.out.print("由前向后输出:");
while (it.hasNext()) {
String str = it.next();
System.out.print(str+"、");
}
System.out.print("\n有后向前输出:");
while(it.hasPrevious()){
System.out.print(it.previous()+"、");
}
}
}
foreach输出
在学习数组时,foreach可以方便输出数组,也可以对集合进行方便的输出。举个简单例子:
public class TestForeach {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
for(String str :list){
System.out.println(str);
}
}
}
Enumeration输出
Enumeration时与Vector类一起在JDK1.0的时候推出的输出接口,即:
最早的Vector如果想要输出就需要使用Enumeration完成。
Enumeration接口的定义如下:
public interface Enumeration<E>{
public boolean hasMoreElments();//判断是否有下一个元素
public E nextElment();//取出当前元素
}