从标准来讲,集合输出有四种手段:Iterator、ListIterator、Enumeration、foreach
1.迭代输出 Iterator
//1.判断是否有下一个元素
boolean hasNext();
//2.取得当前元素
E next();
//3.删除元素
public default void remove();
1.1 Iterator使用
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("网络");
list.add("数据库");
list.add("数据结构");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String str = iterator.next();
System.out.println(str);
}
}
}
1.2 删除元素
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("网络");
list.add("数据库");
list.add("数据结构");
// 实例化Iterator对象
Iterator<String> iterator = list.iterator();
// 使用集合提供的remove()方法,则会产生ConcurrentModificationException
// 使用Iterator的remove方法则不会产生异常
while(iterator.hasNext()){
if(iterator.next().equals("Java")){
iterator.remove();
}
}
System.out.println(list);
}
}
2.双向迭代输出接口
Iterator输出有一个特点,只能够由前向后进行内容的迭代处理,而如果想要进行双向迭代,就必须依靠Iterator的子接口:ListIterator来实现
//1.判断是否有下一个元素
boolean hasNext();
//2.取得下一个元素
E next();
//3.删除元素
void remove();
//4.判断是否有上一个元素
boolean hasPrevious();
//5.取得上一个元素
E previous();
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Test{
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("网络");
list.add("数据库");
list.add("数据结构");
ListIterator<String> listIterator =
list.listIterator();
//由前向后
while(listIterator.hasNext()){
System.out.print(listIterator.next()+"->");
}
System.out.println();
//由后向前
while(listIterator.hasPrevious()){
System.out.print(listIterator.previous()+"->");
}
}
}
3.for-each循环
import java.util.ArrayList;
import java.util.List;
public class Test{
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("网络");
list.add("数据库");
list.add("数据结构");
for(String i:list){
System.out.println(i);
}
}
}
4. Enumeration
//判断是否有下一个元素
public boolean hasMoreElements();
//取得元素
public E nextElement();
但是要想取得这个借口的实例化对象,是不能依靠Collection、List、Set等子类的。只能够依靠Vector子类,因为Enumeration最早的设计就是为Vector服务的,在Vector类中提供有一个取得Enumeration借口对象的方法:public Enumeration<E> elements()
import java.util.Enumeration;
import java.util.Vector;
public class Test{
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("Java");
vector.add("c");
vector.add("数据库");
vector.add("c++");
Enumeration<String> enumeration = vector.elements();
while(enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}
}
}