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<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("world");
        //实例化Iterator对象
        Iterator<String> 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<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("world");
        list.add("Hi");
        list.add("Chain");
        Iterator<String> 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<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("world");
        list.add("Hi");
        ListIterator<String> 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<String> vector = new Vector<>();
        vector.add("Hello");
        vector.add("Hello");
        vector.add("Hi");
        vector.add("world");
        Enumeration<String> 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<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("Hello");
        list.add("Hi");
        list.add("world");
        for (String str : list){
            System.out.println(str);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值