1.迭代输出(Iterator)
对于Iterator接口里面实际有三个抽象方法:
- 判断是否有下一个元素:
public boolean hasNext()
- 取得当前元素:
public E next()
- 删除元素:
public default void remove()
eg:标准的Iterator使用:
public class TestDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("Hello");
list.add("world");
//实例化Iterator对象
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String str = iterator.next();
System.out.println(str);
}
}
}
eg:删除元素
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("Hello");
list.add("world");
list.add("Hi");
list.add("Chain");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String str = iterator.next();
if (str.equals("Hi")){
//使用Iterator的remove()方法不会产生异常
iterator.remove();
continue;
}
System.out.println(str);
}
}
}
Iterator的remove()方法主要解决的就是集合内容的删除操作。
2.双向迭代接口:ListIterator
Iterator输出有一个特点:只能够有前向后进行内容的迭代处理,而如果想要进行双向迭代,那么久必须依靠Iterator的子接口:ListIterator来实现。
此接口定义的方法:
- 判断是否有上一个元素:
public boolean hasPrevious();
- 取得上一个元素:
public E privious();
Iterator接口是有Collection接口支持的,但是ListIterator是由ListIterator接口支持的,List接口提供有如下方法:
- 取得ListIterator接口对象:
public ListIterator listiterator();
eg:ListIterator接口的使用:
public class TestDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("Hello");
list.add("world");
list.add("Hi");
ListIterator<String> listIterator = list.listIterator();
System.out.print("从前向后输出:");
while (listIterator.hasNext()){
System.out.print(listIterator.next()+"、");
}
System.out.println();
System.out.print("从后向前输出:");
while (listIterator.hasPrevious()){
System.out.print(listIterator.previous()+"、");
}
}
}
如果要实现从后向前输出,就必须先进行从前向后输出,否则无法实现双向。
3.Enumeration枚举输出
该接口定义:
- 判断是否有下一元素:
public boolean hasMoreElements();
- 取得元素:
public E nextElement()
要想取得Enumeration接口的实例化对象,只能依靠实现Vector子类,因为Enumeration最早的设计是为Vector服务的,在Vector类中提供有一个Enumeration接口对象的方法:
- 取得Enumeration接口对象:
public Enumeration elements()
eg:使用Enumeration输出:
public class TestDemo {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("Hello");
vector.add("Hello");
vector.add("Hi");
vector.add("world");
Enumeration<String> enumeration = vector.elements();
while (enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}
}
}
4.foreach输出
foreach可以输出数组,也可以输出集合。
eg:使用foreach输出:
public class TestDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("Hello");
list.add("Hi");
list.add("world");
for (String str : list){
System.out.println(str);
}
}
}