4种方式输出:
- Iterator:专门的迭代输出接口【单向】
- ListIterator:双向迭代输出【List集合才能用】
- Enumeration:枚举输出
- foreach:【只支持Set或者List集合】
1、使用Iterator输出Set集合的例子:
package com.mydemo;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class OutputDemo {
public static void main(String[] args) {
// 创建Set集合
Set<String> all = new HashSet<>();
// 保存数据
all.add("火影");
all.add("火影"); // 保存重复的数据
all.add("水影");
all.add("风影");
all.add("土影");
all.add("雷影");
// 实例化Iterator接口对象
Iterator<String> iterator = all.iterator();
// 集合是否有数据
while (iterator.hasNext()) {
// 获取每一个数据
String str = iterator.next();
// 删除当前数据
if ("土影".equals(str)) {
iterator.remove();
} else {
// 输出数据
System.out.print(str + "、");
}
}
}
}
运行结果:
水影、风影、雷影、火影、
2、ListIterator执行双向迭代操作的例子【ListIterator接口只能够通过List子接口进行实例化(Set子接口无法使用ListIterator接口输出)】:
package com.mydemo;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class OutputDemo {
public static void main(String[] args) {
// 创建List集合
List<String> all = new ArrayList<>();
// 保存数据
all.add("火影");
all.add("火影"); // 保存重复的数据
all.add("水影");
all.add("风影");
all.add("土影");
all.add("雷影");
// 实例化ListIterator接口对象
ListIterator<String> listIterator = all.listIterator();
System.out.println("由前向后输出:");
// 集合是否有数据
while (listIterator.hasNext()) {
// 获取每一个数据
String str = listIterator.next();
// 删除当前数据
if ("土影".equals(str)) {
listIterator.remove();
} else {
// 输出数据
System.out.print(str + "、");
}
}
System.out.println();
System.out.println("由后向前输出:");
// 集合是否有数据
while (listIterator.hasPrevious()) {
// 获取每一个数据
String str = listIterator.previous();
// 删除当前数据
if ("土影".equals(str)) {
listIterator.remove();
} else {
// 输出数据
System.out.print(str + "、");
}
}
}
}
运行结果:
由前向后输出:
火影、火影、水影、风影、雷影、
由后向前输出:
雷影、风影、水影、火影、火影、
3、使用Enumeration输出Vector集合数据的例子:
package com.mydemo;
import java.util.Enumeration;
import java.util.Vector;
public class OutputDemo {
public static void main(String[] args) {
// 创建Vector集合
Vector<String> all = new Vector<>();
// 保存数据
all.add("火影");
all.add("火影"); // 保存重复的数据
all.add("水影");
all.add("风影");
all.add("土影");
all.add("雷影");
// 实例化ListIterator接口对象
Enumeration<String> enumeration = all.elements();
// 集合是否有数据
while (enumeration.hasMoreElements()) {
// 获取每一个数据
String str = enumeration.nextElement();
/**
* Enumeration接口并没有提供删除方法,
* 只支持输出操作
*/
System.out.print(str + "、");
}
}
}
运行结果:
火影、火影、水影、风影、土影、雷影、
4、使用Enumeration输出Vector集合数据的例子:
package com.mydemo;
import java.util.HashSet;
import java.util.Set;
public class OutputDemo {
public static void main(String[] args) {
// 创建Vector集合
Set<String> all = new HashSet<>();
// 保存数据
all.add("火影");
all.add("火影"); // 保存重复的数据
all.add("水影");
all.add("风影");
all.add("土影");
all.add("雷影");
all.forEach(System.out::println);
System.out.println("---------------------");
for (String str : all) {
System.out.print(str + "、");
}
}
}
运行结果:
水影
风影
土影
雷影
火影
---------------------
水影、风影、土影、雷影、火影、
5、自定义类使用foreach输出的例子:
package com.mydemo;
import java.util.Iterator;
public class OutputDemo {
public static void main(String[] args) {
// Iterable接口实例
Message message = new Message();
for (String str : message) {
System.out.print(str + "、");
}
}
}
class Message implements Iterable<String> {
// 信息内容
private String[] content = new String[]{
"张三", "李四", "王五"
};
// 操作脚本
private int index;
private class MessageIterator implements Iterator<String> {
/**
* 方法复写,判断是否存在内容
*
* @return
*/
@Override
public boolean hasNext() {
// 判断是否存在内容
return Message.this.index < Message.this.content.length;
}
/**
* 获取数据
*
* @return
*/
@Override
public String next() {
return Message.this.content[Message.this.index++];
}
}
/**
* 获取Iterator实例
*
* @return
*/
@Override
public Iterator<String> iterator() {
return new MessageIterator();
}
}
运行结果:
张三、李四、王五、