Iterator接口。集合输出
在集合中支持以下几种方式。
iterator
ListIterator
foreach输出
emumeration输出。
集合输出的标准操作:
集合输出的时候必须形成以下的思路:只要碰到了集合输出的操作,就一定使用iterator接口,这是最重要的标准。
iterator接口的操作原理:
iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容,则把内容输出。
对于iterator而言,其本身是一个借口,所以要想实例化,需要必须依靠collection接口完成。
在collection接口中可以看到这么一个方法:
可见,可以通过collection接口里面的方法iterator()调用iterator接口。
因此,所有继承于collection的类都有iterator()方法。
实例化iterator接口的标准方法
List<E> all= new List子类<E>() ; Iterator<E> iter = all.iterator() ; // 为Iterator接口实例化
iterator的自带方法:
实例:
package 类集; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all= new ArrayList<String>() ; // all.add("hello") ; all.add("_") ; all.add("world") ; Iterator<String> iter = all.iterator() ; // 为Iterator接口实例化 while(iter.hasNext()){ // 判断是否有内容 System.out.println(iter.next()) ; // 输出内容 } } };
输出结果:
hello
_
world
以上是iterator接口的标准做法。
在iterator接口中提供了remove方法,功能是删除当前对象。
package 类集; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all= new ArrayList<String>() ; // all.add("hello") ; all.add("_") ; all.add("world") ; Iterator<String> iter = all.iterator() ; // 为Iterator接口实例化 while(iter.hasNext()){ // 判断是否有内容 String str = iter.next() ; if("_".equals(str)){ iter.remove() ; // 删除元素 }else{ System.out.println(str) ; // 输出内容 } } System.out.println("删除之后的集合:" + all) ; } };
输出结果:
hello
world
删除之后的集合:[hello, world]
实际操作中很少利用这个remove()方法。
LIst本身存在remove()方法。
如果在使用迭代输出的过程中使用了List中的remove()执行删除操作,则代码将出现问题。
package 类集; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all= new ArrayList<String>() ; // all.add("hello") ; all.add("_") ; all.add("world") ; Iterator<String> iter = all.iterator() ; // 为Iterator接口实例化 while(iter.hasNext()){ // 判断是否有内容 String str = iter.next() ; if("_".equals(str)){ all.remove(str) ; // 删除元素 }else{ System.out.println(str) ; // 输出内容 } } System.out.println("删除之后的集合:" + all) ; } };
输出结果:
hello
删除之后的集合:[hello, world]
这里会发现,一旦List的对象执行删除后就会停止执行循环。
在使用iteratror的时候,不要使用集合类中的remove()方法,只能使用iterator接口中方法。
而且iterator是从前往后输出,属于单向输出,
功能就是完成迭代输出操作。