欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Iterable和Iterator的关系

程序员文章站 2022-04-15 23:44:47
...

Iterator和Iterable

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

Iterable

java.lang包中 并且Collection继承了Iterable接口。
Iterable和Iterator的关系
在Iterable中有三个方法
Iterable和Iterator的关系

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

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

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

Iterable

java.util包中
Iterable和Iterator的关系
在Iterator中有四个方法
Iterable和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接口,直接返回一个迭代器就可以了。

相关标签: java iterator