集合输出

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

迭代输出:Iterator

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

No.

方法

类型

描述

1

public boolean hasNext()

普通

判断是否还有内容

2

public E next()

普通

取出当前内容

当使用Iterator接口输出内容时,往往都先利用hasNext()改变指针位置,同时判断是否有数据,如果当前指针所在位置存在数据,则利用next()取出数据。

java 结果集放在 java集合怎么输出_java


事实上之前我们讲的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.

方法

类型

描述

1

public boolean hasPrevious()

普通

判断是否有前一个元素

2

public E previous()

普通

取出前一个元素

3

public void add(E e)

普通

向集合追加数据

4

public 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
//!!!