类集--集合的输出(重点)

集合的输出(重点)
虽然在Comparable接口之中提供有将数据变为对象数组的输出形式,但是所有的开发者基本上都不会使用
此类访问,因为对于集合的输出有四类主要操作:Iterator,ListIterator,Enumeration,foreach


1.迭代输出:Iterator(核心,95%)

Iterator是最为常用的一个输出,而这个接口的定义如下:
public interface Iterator<E>{
public boolean hasNext();//判断是否有数据
public E next();//取数据
public void remove();//删数据
}

在之前所学习过的Scanner类就是Iterator接口的子类,但是在Iterator接口里面最常用的只有两个方法,
hasNext(),next(),而remove()很少用
但是Iterator本身是一个接口,如果要想为此接口实例化对象,则需要使用Comparable接口定义的方法
取得Iterator接口对象:public Iterator<E> Iterator()
范例:利用Iterator输出数据( Classjif)
package classJI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Classjif {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> all=new ArrayList<String>();
all.add("HELLO");
all.add("HELLO");
all.add("WORLD");
all.add("你好");
Iterator<String> iter=all.iterator();
while(iter.hasNext()) {
String str=iter.next();
System.out.println(str);
}
}


}
那么此时的操作形式就是在集合输出的标准形式,以后不管是何种开发,只要面对集合的输出操作,不需要
任何思考,使用Iterator输出

2.双向迭代输出:ListIterator(理解)

Iterator只能够完成由前向后的单向输出,而ListIterator可以完成双向的输出,ListIterator定义如下:
public interface ListIterator<E> extends Iterator<E>
ListIterator是Iterator的子接口。所以在此接口里面重点只观察两个方法:
判断是否有前一个数据:public boolean hasPrevious();
取出前一个数据:public E previous();

但是如果要取得ListIterator接口对象,那么只能够依靠List接口完成。
范例:
package classJI;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Classjig {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> all=new ArrayList<String>();
all.add("HELLO");
all.add("HELLO");
all.add("WORLD");
all.add("你好");
System.out.println("由前向后输出");
ListIterator<String> iter=all.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+",");
}
}
}
如果要想进行由后向前的输出一定要首先发生由前向后的输出,没用


3.古老的输出:Enumeration(重点)

Enumeration实在JDK1.0的时候巨提出的一个输出接口,最早是将其称为枚举输出,不过后来随着发展,
Enumeration使用的几率少了,那么Enumeration接口定义如下
public interface Enumeration<E>{
public boolean hasMoerElements();//是否有下一个元素
public E nextElement();//取出元素
}

但是如果要取得Enumeration接口实例也是不能够依靠集合接口,只能够依靠Vector类,在Vector子类定义了
如下方法
public Enumeration<E> elements();
范例:使用Enumeration输出
package classJI;
import java.util.Enumeration;
import java.util.Vector;
public class Classjih {
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<String> all=new Vector<String>();
all.add("HELLO");
all.add("HELLO");
all.add("WORLD");
all.add("你好");
Enumeration<String> enu=all.elements();
while(enu.hasMoreElements()) {
String data=enu.nextElement();
System.out.println(data);
}
}
}


4.新的输出:foreach

在之前使用过foreach进行数组的输出,但是对于foreach而言也可以进行集合数据的输出。
package classJI;
import java.util.ArrayList;
import java.util.List;
public class Classjih {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> all=new ArrayList<String>();
all.add("HELLO");
all.add("HELLO");
all.add("WORLD");
all.add("你好");
for(String str:all) {
System.out.println(str);
}

}
}

猜你喜欢

转载自blog.csdn.net/a584898/article/details/81037269