集合的输出本身也是有多种形式的,可以使用如下的几种方式:
Iterator 迭代输出、ListIterator、Enumeration、foreach
Iterator
Iterator 属于迭代输出,基本的操作原理:是不断的判断是否有下一个元素,有的话,则直接输出。
public interface Iterator<E>
要想使用此接口,则必须使用 Collection 接口,在 Collection 接口中规定了一个 iterator()方法,可以用于为 Iterator 接口进行实例化操作。

通过 Collection 接口为其进行实例化之后,一定要记住,Iterator 中的操作指针是在第一条元素之上,当调用 next()方法的时候,获取当前指针指向的值并向下移动,使用 hasNext()可以检查序列中是否还有元素。

package org.listdemo.iteratordemo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorDemo01 { public static void main(String[] args) { Collection<String> all = new ArrayList<String>(); all.add("A"); all.add("B"); all.add("C"); all.add("D"); all.add("E"); Iterator<String> iter = all.iterator(); while (iter.hasNext()) {// 判断是否有下一个元素 String str = iter.next(); // 取出当前元素 System.out.print(str + "、"); } } }
以上的操作是 Iterator 接口使用最多的形式,也是一个标准的输出形式。
但是在使用 Iterator 输出的时候有一点必须注意,在进行迭代输出的时候如果要想删除当前元素,则只能使用 Iterator接口中的 remove()方法,而不能使用集合中的 remove()方法。否则将出现未知的错误。
Iterator 接口本身可以完成输出的功能,但是此接口只能进行由前向后的单向输出。如果要想进行双向输出,则必须使用其子接口 —— ListIterator。
ListIterator
ListIterator 是可以进行双向输出的迭代接口,此接口定义如下:
public interface ListIterator<E> extends Iterator<E>
此接口是 Iterator 的子接口,此接口中定义了以下的操作方法:

但是如果要想使用 ListIterator 接口,则必须依靠 List 接口进行实例化。
List 接口中定义了以下的方法:ListIterator<E> listIterator()
package org.listdemo.listiteratordemo; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class ListIteratorDemo01 { public static void main(String[] args) { List<String> all = new ArrayList<String>(); all.add("A"); all.add("B"); all.add("C"); all.add("D"); all.add("E"); ListIterator<String> iter = all.listIterator(); System.out.print("从前向后输出:"); while (iter.hasNext()) { System.out.print(iter.next() + "、"); } System.out.print("\n从后向前输出:"); while (iter.hasPrevious()) { System.out.print(iter.previous() + "、"); } } }
此处有一点需要注意的是,如果要想进行由后向前的输出,则首先必须先进行由前向后的输出。
废弃的接口:Enumeration
Enumeration 是一个非常古老的输出接口,其也是一个元老级的输出接口,最早的动态数组使用 Vector 完成,那么只要是使用了 Vector 则就必须使用 Enumeration 进行输出。
public interface Enumeration<E>
常用方法:

与 Iterator 不同的是,如果要想使用 Enumeration 输出的话,则还必须使用 Vector 类完成,在类中定义了如下方法:public Enumeration<E> elements()
package org.listdemo.enumerationdemo; import java.util.Enumeration; import java.util.Vector; public class EnumerationDemo01 { public static void main(String[] args) { Vector<String> v = new Vector<String>(); v.add("A"); v.add("B"); v.add("C"); Enumeration<String> enu = v.elements(); while (enu.hasMoreElements()) { System.out.println(enu.nextElement()); } } }
在大部分的情况下,此接口都不再使用了,但是对于一些古老的类库,本身依然要使用此接口进行操作。
新的支持:foreach
foreach语句是java5新增,在遍历数组、集合的时候,foreach拥有不错的性能,foreach 可以用来输出数组的内容,那么也可以输出集合中的内容。
for循环中的循环条件中的变量只求一次值,foreach是for语句的简化,但是foreach并不能替代for循环。可以这么说,任何foreach都能改写为for循环,但是反之则行不通。
package org.lamp.listdemo.foreachdemo; import java.util.ArrayList; import java.util.Collection; public class ForeachDemo01 { public static void main(String[] args) { Collection<String> all = new ArrayList<String>(); all.add("A"); all.add("B"); all.add("C"); all.add("D"); all.add("E"); for (String str : all) { System.out.println(str) ; } } }
在使用 foreach 输出的时候一定要注意的是,里面的操作泛型要指定具体的类型。
end~
浙公网安备 33010602011771号