【Java类集】_Iterator接口笔记(实例亲测)

来源:互联网 发布:linux所有版本 编辑:程序博客网 时间:2024/06/05 01:14

【Java类集】_Iterator接口笔记(实例亲测)

分类: Java
【Java类集】_Iterator接口笔记

本章目标:
掌握集合输出的标准操作
掌握Iterator接口的主要作用及使用注意事项

在集合的操作中支持以下几种方式:

Iterator
ListIterator
foreach输出
Enumeration输出

3、具体内容

Iterator接口简介

集合输出的标准操作:

"在使用集合输出的时候必须以下的思路:只要是碰到了集合输出的操作,就一定使用Iterator接口,因为这是最标准的做法。"

Iterator接口的操作原理:

Iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断是否有内容,如果有内容则把内容取出


对于Iterator而言,因为其本身是一个接口,所以要想实例化则必须依靠Collection接口完成。

Iterator<E> iterator()

[java] view plaincopyprint?
  1. import java.util.Iterator;  
  2. import java.util.List;  
  3. import java.util.ArrayList;  
  4. public class IteratorDemo01{  
  5.     public static void main(String[] args){  
  6.         List<String> allList = new ArrayList<String>();  
  7.         allList.add("Hello");  
  8.         allList.add("_");  
  9.         allList.add("World!!!");  
  10.         Iterator<String> iter = all.iterator();  
  11.         while(iter.hasNext()){    //判断是否有内容  
  12.             System.out.println(iter.next());    //输出内容  
  13.         }  
  14.     }  
  15. }  



输出:

Hello
_
World!!!

以上操作为Iterator的标准操作做法
在Iterator接口中提供了remove()方法,此方法的功能是删除当前的对象。

[java] view plaincopyprint?
  1. import java.util.List;  
  2. import java.util.Iterator;  
  3. import java.util.ArrayList;  
  4. public class IteratorDemo02{  
  5.     public static void main(String[] args){  
  6.         List<String> all = new ArrayList<String>();  
  7.         all.add("hello");  
  8.         all.add("_");  
  9.         all.add("world!!!");  
  10.         Iterator<String> iter = all.iterator();  
  11.         while(iter.hasNext()){  
  12.             String str = iter.next();  
  13.             if("_".equals(str)){  
  14.                 iter.remove();    //删除元素  
  15.             }else{  
  16.                 System.out.println(str);    //输出内容  
  17.             }  
  18.         }  
  19.         System.out.println("删除之后的集合:"+all);  
  20.     }  
  21. }  




输出:

hello
world!!!
删除之后的集合:[hello, world!!!]

在实际上Iterator是很少调用删除操作的,因为其本身的功能是输出内容。当然,对于删除操作也有以下的注意点:
List接口本身存在删除的方法:remove()
如果在使用迭代输出的过程中使用了List中的remove()执行删除操作,则代码将出现问题。

[java] view plaincopyprint?
  1. import java.util.List;  
  2. import java.util.Iterator;  
  3. import java.util.ArrayList;  
  4. public class IteratorDemo02{  
  5.     public static void main(String[] args){  
  6.         List<String> all = new ArrayList<String>();  
  7.         all.add("hello");  
  8.         all.add("_");  
  9.         all.add("world!!!");  
  10.         Iterator<String> iter = all.iterator();  
  11.         while(iter.hasNext()){  
  12.             String str = iter.next();  
  13.             if("_".equals(str)){  
  14.                 all.remove();    //删除元素  
  15.             }else{  
  16.                 System.out.println(str);    //输出内容  
  17.             }  
  18.         }  
  19.         System.out.println("删除之后的集合:"+all);  
  20.     }  
  21. }  



输出:

IteratorDemo02.java:14: 找不到符号
符号: 方法 remove()
位置: 接口 java.util.List<java.lang.String>
                                all.remove();   //删除元素
                                   ^
1 错误

4、总结

Iterator接口的功能是从前向后输出,属于单向输出
Iterator的主要功能就是完成迭代输出操作的

在使用Iterator的时候最好不要删除数据

0 0
原创粉丝点击