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

    A:迭代器概述:
    a:java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。
    我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。

    b:Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,
    如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

    c:每种集合的底层的数据结构不同,例如ArrayList是数组,LinkedList底层是链表,但是无论使用那种集合,我们都会有判断是否有元素
    以及取出里面的元素的动作,那么Java为我们提供一个迭代器定义了统一的判断元素和取元素的方法

    A:迭代器的执行过程
    a:迭代器的原理:
           while(it.hasNext()) {
                System.out.println(it.next());
           }
           
           //cursor记录的索引值不等于集合的长度返回true,否则返回false
             public boolean hasNext() {       
               return cursor != size; //cursor初值为0
                               
             }
    
            //next()方法作用:
            //①返回cursor指向的当前元素 
            //②cursor++
            public Object next() {            
                     int i = cursor; 
                     cursor = i + 1;  
                     return  elementData[lastRet = i]; 
                 
                 }
         b:for循环迭代写法:
            for (Iterator<String> it2 = coll.iterator(); it2.hasNext();  ) {
             System.out.println(it2.next());
           } 

    b.存储时提升了Object。取出时要使用元素的特有内容,必须向下转型。

    Collection coll = new ArrayList();
         coll.add("abc");
         coll.add("aabbcc");
         coll.add("shitcast");
         Iterator it = coll.iterator();
         while (it.hasNext()) {
          //由于元素被存放进集合后全部被提升为Object类型
         //当需要使用子类对象特有方法时,需要向下转型
          String str = (String) it.next();
          System.out.println(str.length());
         }

    c:Iterator接口也可以使用<>来控制迭代元素的类型的。代码演示如下:

    Collection<String> coll = new ArrayList<String>();
    coll.add("abc");
    coll.add("aabbcc");
    coll.add("shitcast");
    Iterator<String> it = coll.iterator();
    while (it.hasNext()) {
    String str = it.next(); 
    //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型
    System.out.println(str.length());
    }
  • 相关阅读:
    HDU 5883 欧拉回路
    HDU 5889 Barricade (Dijkstra+Dinic)
    网络流Dinic算法模板 POJ1273
    216. Combination Sum III
    211. Add and Search Word
    973. K Closest Points to Origin
    932. Beautiful Array
    903. Valid Permutations for DI Sequence
    514. Freedom Trail
    312. Burst Balloons
  • 原文地址:https://www.cnblogs.com/zimo-bwl1029-s/p/9551208.html
Copyright © 2011-2022 走看看