(一)集合的输出java
在类集中提供了如下四种的常见输出方式:数组
Iterator:迭代输出,是使用最多的输出方式;spa
ListIterator:是Iterator的子接口,专门用于输出List中的内容;code
Enumeration:是一个旧的接口,功能与Iterator相似;blog
foreach:JDK 1.5以后提供的新功能,能够输出数组或集合。索引
(二)Iterator接口简介接口
2.1 Iterator接口操做原理rem
集合输出的标准操做: “在使用集合输出的时候必须造成如下的一个思路:‘只要是碰到了集合输出的操做,就必定使用Iterator接口’,由于这是最标准的作法”it
Iterator接口的操做原理: Iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,若是有内容则把内容取出。io
2.2 Iterator接口中的经常使用方法
No. |
方法 |
类型 |
描述 |
1 |
public boolean hasNext() |
普通 |
判断是否有下一个值 |
2 |
public E next() |
普通 |
取出当前元素 |
3 |
public void remove() |
普通 |
移除当前元素 |
实例操做一:输出Collection中的所有内容
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorDemo01 { public static void main(String[] args) { List<String> all = new ArrayList<String>();// 实例化List接口 all.add("I"); // 增长元素 all.add("_"); // 增长元素 all.add("love"); // 增长元素 all.add("_"); // 增长元素 all.add("you"); // 增长元素 Iterator<String> iter = all.iterator(); // 直接实例化Iterator接口S while (iter.hasNext()) { // 依次判断 System.out.print(iter.next() + "、");// 输出内容 } } }
操做二:使用Iterator删除指定内容
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorDemo02 { public static void main(String[] args) { List<String> all = new ArrayList<String>();// 实例化List接口 all.add("I"); // 增长元素 all.add("_"); // 增长元素 all.add("love"); // 增长元素 all.add("_"); // 增长元素 all.add("you"); // 增长元素 Iterator<String> iter = all.iterator(); // 直接实例化Iterator接口S while (iter.hasNext()){ // 依次判断 String str=iter.next(); if("_".equals(str)){ iter.remove(); } else{ System.out.print(str + "、");// 输出内容 } } System.out.println("\n删除以后的集合:"+all); } }
迭代输出时删除元素的注意点:
正常状况下,一个集合要把内容交给Iterator输出,可是集合操做中也存在一个remove()方法,若是在使用Iterator输出时,集合本身调用了删除方法,则会出现运行时的错误。
不正确的删除方法:
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorDemo03 { public static void main(String[] args) { List<String> all = new ArrayList<String>(); // 实例化List接口 all.add("I"); // 增长元素 all.add("_"); // 增长元素 all.add("love"); // 增长元素 all.add("_"); // 增长元素 all.add("you"); // 增长元素 Iterator<String> iter = all.iterator(); // 直接实例化Iterator接口S while (iter.hasNext()) { String str = iter.next(); // 取出内容 if ("_".equals(str)) { // 判断内容是不是“_” all.remove(str); // 删除当前元素,使用集合删除 (使用集合删除,这里就有问题,出现异常) } else { System.out.print(str + "、"); // 输出元素内容 } } System.out.println("\n删除以后的集合:" + all); // 输出集合内容,调用toString()方法 } }
2.3 ListIterator接口
Iterator接口的主要功能是由前向后单向输出,而此时若是想实现由后向前或是由前向后的双向输出,则就必须使用Iterator的子接口 —— ListIterator。 ListIterator接口定义以下: public interface ListIterator<E> extends Iterator<E>
2.3.1 ListIterator接口中的经常使用方法
No. |
方法 |
类型 |
描述 |
1 |
public boolean hasNext() |
普通 |
判断是否有下一个值 |
2 |
public E next() |
普通 |
取出当前元素 |
3 |
public void remove() |
普通 |
移除当前元素 |
4 |
public void add(E o) |
普通 |
将指定元素增长集合 |
5 |
public boolean hasPrevious() |
普通 |
判断是否有上一个元素 |
6 |
public E previous() |
普通 |
取出当前元素 |
7 |
public int nextIndex() |
普通 |
返回下一个元素的索引号 |
8 |
public int previousIndex() |
普通 |
返回上一个元素的索引号 |
9 |
public void set(E o) |
普通 |
替换元素 |
区别于Iterator:
与Iterator接口不一样的是,ListIterator接口只能经过List接口实例化,即:只能输出List接口中的内容。在List接口中定义了能够为ListIterator接口的实例化方法: public ListIterator<E> listIterator()
实例操做一:进行双向迭代
import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class ListIteratorDemo01 { public static void main(String[] args) { List<String> all = new ArrayList<String>(); // 实例化List接口 all.add("I"); // 增长元素 all.add("_"); // 增长元素 all.add("love"); // 增长元素 all.add("_"); // 增长元素 all.add("you"); // 增长元素 ListIterator<String> iter = all.listIterator();// 实例化ListIterator接口 System.out.print("由前向后输出:"); // 输出信息 while (iter.hasNext()) { // 由前向后输出 String str = iter.next(); // 取出内容 System.out.print(str + "、"); // 输出内容 } System.out.print("\n由后向前输出:"); // 输出信息 while (iter.hasPrevious()) { // 由前向后输出 String str = iter.previous(); // 取出内容 System.out.print(str + "、"); // 输出内容 } }}
实例操做二:增长及替换元素
import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class ListIteratorDemo02 { public static void main(String[] args) { List<String> all = new ArrayList<String>(); // 实例化List接口 all.add("I"); // 增长元素 all.add("_"); // 增长元素 all.add("love"); // 增长元素 all.add("_"); // 增长元素 all.add("you"); // 增长元素 ListIterator<String> iter = all.listIterator(); // 实例化ListIterator接口 System.out.print("由前向后输出:"); // 信息输出 while (iter.hasNext()) { // 由前向后输出 String str = iter.next(); // 取出内容 System.out.print(str + "、"); // 输出内容 iter.set("yes-" + str); // 替换元素 } System.out.print("\n由后向前输出:"); // 信息输出 iter.add("do"); // 增长元素 while (iter.hasPrevious()) { // 由前向后输出 String str = iter.previous(); // 取出内容 System.out.print(str + "、"); // 输出内容 } } }