Java学习总结:54(集合输出)

集合输出

在Java中,集合的输出操作有四种形式:Iterator输出、ListIterator输出、foreach(加强型for循环)输出、Enumeration输出。

迭代输出:Iterator

Iterator(迭代器)是集合输出操作中最常用的接口,而在Collection接口中也提供了直接为Iterator接口实例化的方法(iterator()),所以任何集合类型都可以转换为Iterator接口输出。
在Iterator接口中一共定义了两个抽象方法,如下所示:

No.方法类型描述
1public boolean hasNext()普通判断是否还有内容
2public E next()普通取出当前内容

当使用Iterator接口输出内容时,往往都先利用hasNext()改变指针位置,同时判断是否有数据,如果当前指针所在位置存在数据,则利用next()取出数据。 在这里插入图片描述
事实上之前我们讲的Scanner类就是Iterator接口的子类,所以在Scanner使用时才要求先利用hasNextXxx()判断是否有数据,在利用nextXxx()取得数据。

例:使用Iterator输出集合

package Project.Study.IteratorClass;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test1 {
    public static void main(String[]args){
        List<String>all = new ArrayList<>();    //实例化List集合
        all.add("Hello");                       //保存数据
        all.add("Hello");                       //保存重复数据
        all.add("World");
        all.add("!!!");
        Iterator<String> iter = all.iterator(); //实例化Iterator接口
        while(iter.hasNext()){                  //判断当前是否还有数据
            String str = iter.next();           //取出当前数据
            System.out.println(str);            //输出数据
        }
    }
}
//结果:
//Hello
//Hello
//World
//!!!

双向迭代:ListIterator

Iterator接口虽然可以实现集合的迭代输出操作,但他本身存在一个问题:只能进行由前向后的输出。所以为了让输出更灵活,在类集框架中提供了一个ListIterator接口,利用该接口可以实现双向迭代,他属于Iterator的子接口,常用方法如下:

No.方法类型描述
1public boolean hasPrevious()普通判断是否有前一个元素
2public E previous()普通取出前一个元素
3public void add(E e)普通向集合追加数据
4public void set(E e)普通修改集合数据

ListIterator是专门为List子接口定义的输出接口,所以ListIterator接口对象的实例化可以依靠List接口提供的方法:
public ListIterator< E > listIterator()。
例:完成双向迭代

package Project.Study.ListIteratorClass;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class Test1 {
    public static void main(String[]args){
        List<String>all = new ArrayList<>();            //实例化List接口对象      
        all.add("Hello");                               //向集合里面保存数据
        all.add("World");
        all.add("Hello");
        all.add("!!!");
        System.out.println("由前向后输出:");
        ListIterator<String>iter = all.listIterator();  //实例化ListIterator接口
        while(iter.hasNext()){                          //由前向后迭代
            String str = iter.next();                   //取出当前数据
            System.out.println(str+"、");               //输出数据
        }
        System.out.println("由后向前输出:");
        while(iter.hasPrevious()){                      //由后向前迭代
            String str = iter.previous();
            System.out.println(str+"、");
        }
    }
}
//结果:
//由前向后输出:
//Hello、World、Hello、!!!、
//由后向前输出:
//!!!、Hello、World、Hello、

注意:ListIterator接口需要注意迭代顺序,如果要进行由后向前迭代,必须先进行由前向后迭代。

foreach输出

foreach输出之前我们简单地讲过一遍他的使用方法。

例:利用foreach输出集合数据

package Project.Study.ListIteratorClass;

import java.util.ArrayList;
import java.util.List;

public class Test2 {
    public static void main(String[]args){
        List<String>all = new ArrayList<>();            //实例化List接口对象
        all.add("Hello");                               //向集合里面保存数据
        all.add("World");
        all.add("Hello");
        all.add("!!!");
        //集合中包含的数据都是String型,所以需要使用String接收集合中的每一个数据
        for (String str:all
             ) {
            System.out.println(str);
        }
    }
}
//结果:
//Hello
//World
//Hello
//!!!

Enumeration输出

Enumeration(枚举输出)的定义如下:

public interface Enumeration<E>{
	public boolean hasMoreElements();		//判断是否有下一个元素,等同于hasNext()
	public E nextElement();					//取出当前元素,等同于next()
}

例:利用Enumeration接口输出对象

package Project.Study.ListIteratorClass;

import java.util.Enumeration;
import java.util.Vector;

public class Test3 {
    public static void main(String[]args){
        Vector<String>all = new Vector<>();             //实例化Vector子类对象
        all.add("Hello");                               //向集合里面保存数据
        all.add("World");
        all.add("Hello");
        all.add("!!!");
        Enumeration<String> enu = all.elements();       //取得Enumeration接口对象
        while(enu.hasMoreElements()){                   //判断是否有数据
            String str = enu.nextElement();             //取出当前数据
            System.out.println(str);                    //输出数据
        }
    }
}
//结果:
//Hello
//World
//Hello
//!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值