30.iterator

迭代器

迭代器:是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

特点:

  1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
  2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
  3. 访问到一半时不能往回退
  4. 便于循环比较大的数据集合,节省内存
>>> a = iter([1,2,3,4,5])
>>> a
<list_iterator object at 0x101402630>
>>> a.__next__()
1
>>> a.__next__()
2
>>> a.__next__()
3
>>> a.__next__()
4
>>> a.__next__()
5
>>> a.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

  

时间: 2024-09-29 08:27:42

30.iterator的相关文章

Java复习之-Iterator

Iterator和collection和map系列不一样,后两个主要是用来装入其他对象,Iterator主要是用来遍历collection中的对象,Iterator也被称为迭代器, Iterator必须依附于collection对象 package Mypackage; import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;import java.util.Iterator; import

Headfirst设计模式的C++实现——迭代器(Iterator)

iterator.h 1 #ifndef _ITERATOR_H_ 2 #define _ITERATOR_H_ 3 4 #include "menu_item.h" 5 6 class Iterator { 7 public: 8 virtual bool has_next() = 0; 9 virtual MenuItem *next() = 0; 10 }; 11 #endif menu_item.h 1 #ifndef _MENU_ITEM_H_ 2 #define _MENU

java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)

转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/53073995 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) ??这篇是数据结构与算法的第3篇,通过前两篇的介绍,对应顺序表和链表已有

大数据之路week01--自学之集合_2(Iterator迭代器)

选代器:是遍历集合的一种方式.迭代器是依赖于集合而存在的.我有一个集合: Collection c = new ArrayList();我们给集合中添加元素: c. add("hello' );c. add( "world”);c. add("java"); 集合的使用步骤:A:创建集合对象B:创建元素对象C:把元素添加到集合D:遍历集合a:通过集合对象获取迭代器对象b:通过迭代器对象的hasNext (方法判断是否有元素c:通过迭代器对象的next ()方法获取元

10.hibernate缓存机制详细分析(转自xiaoluo501395377)

hibernate缓存机制详细分析 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相信看完的朋友绝对能对hibernate的 N+1问题以及缓存有更深的了解. 一.N+1问题 首先我们来探讨一下N+1的问题,我们先通过一个例子来看一下,什么是N+1问题: list()获得对象: 1 /** 2 * 此时会发出一条sql,将30个学生全部查询出来

自己做的demo--关于HashMap

1 package com.pb.collection; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.Map; 6 import java.util.Map.Entry; 7 import java.util.Set; 8 //by zengzhiwei 9 public class HashMapTest { 10 public static void main(String arg

统计输入任意字符串中字符的个数

1 import java.util.ArrayList; 2 import java.util.HashSet; 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Set; 6 7 /** 8 * 9 * @author trfizeng 10 */ 11 public class CountStr { 12 13 //统计任意字符串出现的次数 14 public static List<Strin

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

Java Day 18

泛型 提高了安全性,由运行时期出现的问题转移到编译时期 应用场景  当操作的引用数据类型不确定的时候,就是用<>.  其实<>就是一个用于接收具体引用数据类型的参数范围.  擦除与补偿 泛型技术是给编译器使用的技术,用于编译时期.确保了类型的安全. 运行时,会将泛型去掉,生成的class文件中是不带泛型的,这个称为泛型的擦除. 兼容运行的类加载器. 补偿:在运行时,获取元素的类型进行转换,无须强制类型转换. 1 package com.company.Day018; 2 3 4 /