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 }
  • 相关阅读:
    mysql联合索引命中条件
    Shiro知识初探(更新中)
    Java中使用MongoTemplate进行分批处理数据
    Java中String时间范围比较
    使用ReentrantLock
    使用Condition
    python的坑--你知道吗?
    python基础--函数全解析(1)
    CSS基本语法及页面引用
    HTML学习汇总
  • 原文地址:https://www.cnblogs.com/evilliu/p/7837742.html
Copyright © 2011-2022 走看看