集合输出方式
- Iterator
- ListIterator
- Enumeration
- foreach
Iterator迭代输出
范例:使用Iterator输出set集合
package com.lxh.eighteenchapter;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class JavaCollectionDemo492 {
public static void main(String[] args) {
Set<String> all=new TreeSet<String>();
all.add("张三");
all.add("李四");
all.add("王五");
all.add("周六");
Iterator<String> iter=all.iterator();
while (iter.hasNext()) { //判断是否有数据
String str=iter.next(); //获取每一个数据
System.out.println(str+"、");
}
}
}
执行结果
周六、张三、李四、王五、
ListIterator双向迭代输出
Iterator可以完成的是由前向后的单向输出操作,如果现在希望可以完成由前向后,和由后向前输出的话,那么就可以利用ListIterator接口完成,此接口是Iterator的子接口
范例:执行双向迭代操作
在进行由后向前的反向迭代前一定要先进行由前向后的迭代才可以正常使用
package com.lxh.eighteenchapter;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class JavaCollectionDemo494 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
ListIterator iter=list.listIterator();
//由前向后
while (iter.hasNext()) {
String str=(String) iter.next();
System.out.print(str+" ");
}
System.out.println(); //换行
//由后向前
while (iter.hasPrevious()) {
String str=(String) iter.previous();
System.out.print(str+" ");
}
}
}
执行结果
1 2 3 4 5
5 4 3 2 1
Enumeration枚举输出
Enumeration是在JDK 1.0时推出的早期集合输出接口(最初被称为枚举输出),该接口设置的主要目的是为了输出Vector集合数据
范例:使用Enumeration输出Vector集合数据
import java.util.Enumeration;
import java.util.Vector;
public class JavaCollectionDemo495 {
public static void main(String[] args) {
Vector<Integer> ve=new Vector<>();
ve.add(1);
ve.add(2);
ve.add(3);
ve.add(4);
Enumeration<Integer> enm=ve.elements(); //获取Enumeration实例
while (enm.hasMoreElements()) {
Integer integer = (Integer) enm.nextElement();
System.out.print(integer+" ");
}
}
}
执行结果
1 2 3 4
foreach
JDK 1.5版本后开始提供的foreach迭代输出操作,除了可以实现数组输出外,也支持集合的输出操作。
范例:使用foreach输出集合数据
import java.util.HashSet;
import java.util.Set;
public class JavaCollectionDemo496 {
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
for(Integer s:set) {
System.out.print(s+" ");
}
}
}
执行结果
1 2 3 4
范例:自定义类使用foreach输出
需要Iterable接口支持
package com.lxh.eighteenchapter;
import java.util.Iterator;
public class Message496 implements Iterable<String> {
private String[] str=new String[] {"张三","李四","王五","周六"};
private int foot;
@Override
public Iterator<String> iterator() { //获取Iterator实例
return new MessageIterator();
}
//内部类
private class MessageIterator implements Iterator<String>{
@Override
public boolean hasNext() {
return Message496.this.foot<Message496.this.str.length;
}
@Override
public String next() {
return Message496.this.str[Message496.this.foot++];
}
}
}
测试
package com.lxh.eighteenchapter;
public class JavaCollectionDemo497 {
public static void main(String[] args) {
Message496 mes=new Message496();
for(String msg:mes) {
System.out.print(msg+" ");
}
}
}
执行结果
张三 李四 王五 周六