java中的Iterator和Iterable

1.Iterable接口在java.lang包中;Iterator接口在java.util包中

2.Iterable中只有一个方法,那就是返回一个Iterator迭代器:Iterator<T> iterator()

而Iterator中有关于迭代器的核心功能,next(),hasNext(),remove()

所以说,Iterable接口实现后的功能是“返回”一个迭代器,而Iterator接口实现后的功能是“使用”一个迭代器

3.在java.util中的容器类基本都实现了Iterable ,下图截自jdk1.6

容器中的类都实现了Iterable接口而非Iterator接口的原因是,因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。 当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。 
而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。  多个迭代器是互不干扰的。

java中的Iterator和Iterable,布布扣,bubuko.com

时间: 2024-10-14 16:01:00

java中的Iterator和Iterable的相关文章

Java中的Iterator用法

迭代器定义: 迭代器是一种设计模式,它是一个对象.迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式,迭代器模式属于行为型模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示. 迭代器功能:Java中的Iterator功能简单,并且只能单向移动遍历 (1)iterator()方法:容器使用iterator()返回一个Iterator. 注意:iterator()方法是java.lang.Iterable接口,被Collecti

java中的Iterator接口

Iterator接口 Iterator接口也是Java集合框架的成员,但它与Collection系列.Map系列的集合不一样:Collection系列集合.Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器. Iterator接口里定义了如下4个方法: –boolean hasNext():如果被迭代的集合还元素没有被遍历,则返回true. –Object next():返回集合里下一个元素. –

Java中迭代器Iterator的使用

Java集合类中Map接口下的相关类并没有像Collection接口的相关类一样实现get()方法,因此在要实现遍历输出的场景中没法直接用get()方法来取得对象中的数据,但Java本身提供了另一种遍历数据的方法,即用Iterator迭代器,虽然Iterator可以用来遍历读取数据,但它本质上不是一种方法,它只是一种设计模式,它是一个对象,一个"轻量级"的对象.下文讲讲Iterator在不同接口中的使用方法: (一)Iterator在Collection接口中的使用. 虽然Collec

java中的iterator迭代器

Collection的iterator方法返回一个实现了一个Iterator接口的对象 Iterator接口中包含三个方法: 1)E next() 2)boolean hasNext() 3)void remove 具体用法: Iterator<Integer> integers=collection.iterator(); while(integers.hasNext()){ System.out.print(integers.next()+" "); } 可以通过调用h

java中的Iterator与增强for循环的效率比较

最近在优化代码时遇到了这个问题:Iterator与增强for循环到底哪个效率高?之前在学习的时候,好像记着老师说过遍历集合(如list)时,使用iterator好像正规一些,因为是专用的,但是运行效率问题确实不曾考虑,今天做了一个实验:对两者进行了简单的比较,得出的结论是:增强for循环运行效率更高一些.但是我不确定这是否会代表全部情况,这里仅仅记录一下,做个参考,后期有新的认识再来补充,欢迎大家批评指正. 1 public static void main(String[] args) { 2

Java中的Iterable与Iterator详解

在Java中,我们可以对List集合进行如下几种方式的遍历: List<Integer> list = new ArrayList<>(); list.add(5); list.add(23); list.add(42); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + ","); } Iterator it = list.iterator(); while (i

Java中Iterator(迭代器)的用法及其背后机制的探究

在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是jav

Java中Iterator用法整理

迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是java.lang.Iterable接口,被Collection继承

Java中Iterator(迭代器)的用法及其背后机制探究

在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是jav