Iterable和Iterator的关系

Iterator和Iterable

学习任何类和文档最标准的解释当然还是从jdk API里面学习,因为这个是最准确不过的东西了。想看API文档

Iterable

java.lang包中 并且Collection继承了Iterable接口。
在这里插入图片描述
在Iterable中有三个方法
在这里插入图片描述

Iterator iterator;
该方法主要是返回T类型的元素上的一个迭代器

dafault void forEach(Consumer<? super T> action);
该方法是循环输出,对内部元素进行遍历,并对元素进行指定的操作

default Spliterator spliterator;
该方法提供了一个可以并行遍历元素的迭代器,以适应现在cpu多核时代并行遍历的需求。

Iterable

java.util包中
在这里插入图片描述
在Iterator中有四个方法
在这里插入图片描述

dafault void forEachRemaining(Consumer<? super E> action);
JDK 1.8后新增默认方法 使用Lambda表达式来遍历集合元素

boolean hasNext()
如果被迭代遍历的集合还没有被遍历完,返回True

Object next()
返回集合里面的下一个元素

remove()
删除集合里面上一次next()方法返回的元素。

文档咱们看完了。估计新手还是对这两个接口有所疑问。我简单的总结一下,也是个人理解。对于Iterable接口来说,是一个操作迭代器的接口。而对于Iterator接口来说,则是将集合转化为迭代器,用迭代器的方式来操作里面的数据元素。所以集合继承是的Iterable接口,实现集合变成迭代器。下面举一个🌰来证明一下我的观点。

public class TestList{
	//new 一个集合出来,用迭代器进行迭代。
	List<String> list = new ArrayList<>();
	for(int i =0; i<10; i++){
		list.add("123");
	}
	//用迭代器的方式进行遍历。
	Iterator it = list.iterator();//首先是变成迭代器,重点是要对立面的元素进行操作
	while(it.hasNext()){
		System.out.println(it.next());
	}
}

嗯,这么就能看出来,iterator是对数据元素进行操作的。所以大家要是在实现迭代器上面要直接实现iterable接口,直接返回一个迭代器就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值