Java之 集合输出(迭代输出:Iterator、双向迭代接口:ListIterator、Enumeration枚举输出、foreach输出)

1.迭代输出(Iterator)

对于Iterator接口里面实际有三个抽象方法:

  • 判断是否有下一个元素:public boolean hasNext()
  • 取得当前元素:public E next()
  • 删除元素:public default void remove()

eg:标准的Iterator使用:

public class TestDemo {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("world");
        //实例化Iterator对象
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            String str = iterator.next();
            System.out.println(str);
        }
    }
}

eg:删除元素

public class Test {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("world");
        list.add("Hi");
        list.add("Chain");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            String str = iterator.next();
            if (str.equals("Hi")){
                //使用Iterator的remove()方法不会产生异常
                iterator.remove();
                continue;
            }
            System.out.println(str);
        }
    }
}

Iterator的remove()方法主要解决的就是集合内容的删除操作。

2.双向迭代接口:ListIterator

Iterator输出有一个特点:只能够有前向后进行内容的迭代处理,而如果想要进行双向迭代,那么久必须依靠Iterator的子接口:ListIterator来实现。

此接口定义的方法:

  • 判断是否有上一个元素:public boolean hasPrevious();
  • 取得上一个元素:public E privious();

Iterator接口是有Collection接口支持的,但是ListIterator是由ListIterator接口支持的,List接口提供有如下方法:

  • 取得ListIterator接口对象:public ListIterator listiterator();

eg:ListIterator接口的使用:

public class TestDemo {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("world");
        list.add("Hi");
        ListIterator listIterator = list.listIterator();
        System.out.print("从前向后输出:");
        while (listIterator.hasNext()){
            System.out.print(listIterator.next()+"、");
        }
        System.out.println();
        System.out.print("从后向前输出:");
        while (listIterator.hasPrevious()){
            System.out.print(listIterator.previous()+"、");
        }
    }
}

如果要实现从后向前输出,就必须先进行从前向后输出,否则无法实现双向。

3.Enumeration枚举输出

该接口定义:

  1. 判断是否有下一元素:public boolean hasMoreElements();
  2. 取得元素:public E nextElement()

要想取得Enumeration接口的实例化对象,只能依靠实现Vector子类,因为Enumeration最早的设计是为Vector服务的,在Vector类中提供有一个Enumeration接口对象的方法:

  • 取得Enumeration接口对象:public Enumeration elements()

eg:使用Enumeration输出:

public class TestDemo {
    public static void main(String[] args) {
        Vector vector = new Vector<>();
        vector.add("Hello");
        vector.add("Hello");
        vector.add("Hi");
        vector.add("world");
        Enumeration enumeration = vector.elements();
        while (enumeration.hasMoreElements()){
            System.out.println(enumeration.nextElement());
        }
    }
}

4.foreach输出

foreach可以输出数组,也可以输出集合。

eg:使用foreach输出:

public class TestDemo {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("Hi");
        list.add("world");
        for (String str : list){
            System.out.println(str);
        }
    }
}

你可能感兴趣的:(Java之 集合输出(迭代输出:Iterator、双向迭代接口:ListIterator、Enumeration枚举输出、foreach输出))