zoukankan      html  css  js  c++  java
  • java集合---迭代器iterator

    一:ArraryList  最终继承超级接口Collection,Colection接口继承Iterator接口。

    public interface Collection<E>
    extends Iterable<E>

    而Iterator只有一个方法:

    Iterator<T> iterator()

    在ArraryList实现类中有对方法的重写,返回当前实现类的迭代器对象(Returns an iterator over a set of elements of type T.)。

     1 package test08;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collection;
     5 import java.util.Iterator;
     6 
     7 public class iter_demo {
     8     public  static void  main(String...args){
     9         iter_test();
    10 
    11     }
    12     public static  void iter_test(){
    13         Collection<Integer> in_ar=new ArrayList<Integer>();
    14         in_ar.add(11);
    15         in_ar.add(11);
    16         in_ar.add(11);
    17         in_ar.add(11);
    18         Iterator<Integer> in_it=in_ar.iterator();
    19         while (in_it.hasNext()){
    20             System.out.print(in_it.next());
    21         }
    22     }
    23 }

    其中:hasNnext()判断迭代器中是否还有下一个数组元素。

    next()表示获取下个数组元素。

    迭代器实现原理类似内存指针,hasNext每次判断下个元素是否为空,即指针指向下个元素,有就返回true否则返回false。

    二、增强for

    语法: for(type  变量:可迭代的对象){

          代码块

        }

    增强for虽然能减少代码的量,但是弊端也明显,无法操作索引。

    上面例子不采用迭代器:

     1 package test08;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collection;
     5 import java.util.Iterator;
     6 
     7 public class iter_demo {
     8     public  static void  main(String...args){
     9         iter_test();
    10 
    11     }
    12     public static  void iter_test(){
    13         Collection<Integer> in_ar=new ArrayList<Integer>();
    14         in_ar.add(11);
    15         in_ar.add(11);
    16         in_ar.add(11);
    17         in_ar.add(11);
    18         for(Integer i:in_ar){
    19             System.out.print(i);
    20         }
    21     }
    22 }

     如果想要操作索引,还得使用传统的for。

     1 package test08;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collection;
     5 import java.util.Iterator;
     6 
     7 public class iter_demo {
     8     public  static void  main(String...args){
     9         iter_test();
    10 
    11     }
    12     public static  void iter_test(){
    13         Collection<Integer> in_ar=new ArrayList<Integer>();
    14         in_ar.add(11);
    15         in_ar.add(11);
    16         in_ar.add(11);
    17         in_ar.add(11);
    18         for(Integer i=0;i<in_ar.size();i++){
    19             ArrayList<Integer> in_ar_new=(ArrayList<Integer>) in_ar;
    20             System.out.print(in_ar_new.get(i));
    21         }
    22     }
    23 }
  • 相关阅读:
    读取XML字符串到临时表
    Golang学习笔记
    Golang环境配置Centos
    IntelliJ Idea 常用快捷键列表
    Elasticsearch的Groovy Script自定义评分检索
    MSSQL读取xml字符串到临时表
    通过反射给对象属性动态赋值总结(含可空属性)
    。。。。。
    指定位置输出函数
    DBhelper
  • 原文地址:https://www.cnblogs.com/evilliu/p/7837742.html
Copyright © 2011-2022 走看看