iterator java

作者:原创时间:2022-03-22
文档

iterator java是什么,让我们一起了解一下?

iterator java就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。

那么iterator的由来是怎样的?

Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet…,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。

  因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式!

  把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。

对于数组我们使用的是下标来进行处理的:

1 int array[] = new int[3];    
2 for (int i = 0; i < array.length; i++) {
3     System.out.println(array[i]);
4 }
对ArrayList的处理
1 List list = new ArrayList();
2        for(int i = 0 ; i < list.size() ;  i++){
3           String string = list.get(i);
4 }

因此对于这两种方式,我们总是都知道它的内部结构,访问代码和集合本身是紧密耦合的,但无法将访问逻辑从集合类和客户端代码中分离出来,该怎么办?

不同的集合会对应不同的遍历方法,客户端代码无法复用,在实际应用中如何将上面两个集合整合是相当麻烦的,所以才有Iterator,它总是用同一种逻辑来遍历集合,使得客户端自身不需要来维护集合的内部结构,所有的内部状态都由Iterator来维护。客户端不用直接和集合进行打交道,而是控制Iterator向它发送向前向后的指令,就可以遍历集合。

一、java.util.Iterator

下面让我们看看Java中的Iterator接口是如何实现的。

在Java中Iterator为一个接口,它只提供了迭代的基本规则。在JDK中它是这样定义的:对Collection进行迭代的迭代器,迭代器取代了Java Collection Framework中的Enumeration。

迭代器与枚举有两点不同:

1. 迭代器在迭代期间可以从集合中移除元素。

2. 方法名得到了改进,Enumeration的方法名称都比较长。

其接口定义如下:

package java.util;
public interface Iterator {
    boolean hasNext();//判断是否存在下一个对象元素
    E next();//获取下一个元素
    void remove();//移除元素
}

二、Iterable

Java中还提供了一个Iterable接口,Iterable接口实现后的功能是‘返回’一个迭代器,我们常用的实现了该接口的子接口有:Collection、List、Set等。该接口的iterator()方法返回一个标准的Iterator实现,实现Iterable接口允许对象成为Foreach语句的目标,就可以通过foreach语句来遍历你的底层序列。

Iterable接口包含一个能产生Iterator对象的方法,并且Iterable被foreach用来在序列中移动。因此如果创建了实现Iterable接口的类,都可以将它用于foreach中。

Iterable接口的具体实现:

Package java.lang;
import java.util.Iterator;
public interface Iterable {undefined
Iterator iterator();
}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
铁观音产地是哪个地方 java -ea 南极洲有哪些国家 行程码带*号什么意思 祁连山在哪个省境内 idea新建java项目 java -xms java 32bit idea新建一个java项目 熊猫只有中国才有的吗 java a++和++a的区别 茉莉花茶是绿茶吗 java active 瓮安县属于哪个市 java activiti java activity 西北五省是哪五省 java actuator java add java addall interface java integer java instant java instance java influxdb java idea编写java程序 idea怎么建立java idea创建普通java项目 idea创建java hotspot java hibernate java hbase java guava java groupby java grep java golang调用java glue java geojson java geohash java gdb java