前言:Collection、List、Set三个接口里面,只有List接口是最方便进行输出操作的,所以这里给出集合的四种输出形式。
一、迭代Iterator
集合在JDK1.8之前支持四种输出方式:Iterator(95%)、ListIterator(0.05%)、Enumeration(4.9%)、foreach(0.05%).
API接口定义:public interface Iterator<E>;
定义的主要方法:public boolean hasNext(),public E next();
Iterator本事是一个接口,如果想去的本接口实例化只能依靠Collection接口,在Collection接口定义有这样的一个操作:public Iterator<E> iterator();
范例代码:
package cn.mldn.demo26; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class TestDemo { public static void main(String[] args) { Set<String> all = new HashSet<String>(); all.add("中国"); all.add("美国"); all.add("英国"); Iterator<String> iter = all.iterator(); while(iter.hasNext()){ String str = iter.next(); System.out.println(str); } } }
运行结果:
二、双向迭代:ListIterator(了解)
Iterator本身只具备由前向后的输出(99%的情况下都是这样做的),但是由于实际操作的需要,需要支持双向输出:可以由前向后也可以由后向前输出。那么就可以使用Iterator接口的子接口:ListIterator接口:
主要的方法:
|-public boolean hasPrevious();判断是否有前一个元素;
|-public E previous():取得钱一个元素;
ListIterator是专门为List子接口定义的输出接口,方法:public ListIterator<E>listIterator();
范例代码:
package cn.mldn.demo26; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class TestDemo_01 { public static void main(String[] args) { List<String> all = new ArrayList<String>(); all.add("A"); all.add("B"); all.add("C"); all.add("D"); ListIterator<String> iter = all.listIterator(); while(iter.hasNext()){ String str = iter.next(); System.out.print(str+"、"); } System.out.println("\n由后向前输出"); while(iter.hasPrevious()){ System.out.print(iter.previous()+"、"); } } }
运行结果:
★★特别提醒:如果要实现由后向前输出的操作之前,一定要首先发生由前向后的输出。
三、forearch输出
foreach不关是能够简便输出数组,对于集合也是可以的。
范例代码:
package cn.mldn.demo26; import java.util.ArrayList; import java.util.List; public class TestDemo_02 { public static void main(String[] args) { List<String> all = new ArrayList<String>(); all.add("A"); all.add("B"); all.add("C"); all.add("D"); for(String str:all){ System.out.print(str); } } }
运行结果:
四、Enumeration输出
Enumeration是Vector类一起在JDK1.0的时候退出的输出接口,即:最早的Vector如果要想输出就需要使用Enumeration接口完成,那么此接口定义如下:
public interface Enumeration<E>
重要方法:public boolean hasMoreElements()--判断是否有下一个元素,等同于hasNext();
public E nextElement()—取出当前元素,等同于next();
如果要取得Enumeration接口实例化对象只能依靠Vector子类。
Vector子类里面定义如下的操作方法:public Enumeration<E> elements();
范例代码:
package cn.mldn.demo26; import java.util.Enumeration; import java.util.Vector; public class TestDemo_03 { public static void main(String[] args) { Vector<String> all = new Vector<String>(); all.add("A"); all.add("B"); all.add("C"); all.add("D"); Enumeration<String> enu = all.elements(); while(enu.hasMoreElements()){ String str = enu.nextElement(); System.out.print(str); } } }
运行结果:
总结:对于输出集合的操作中,重点以Iterator与Enumeration为主,并且记住两个接口常用的一些方法。