我是Java的新手,我真的很困惑迭代器和可迭代器。谁能给我解释一下并举几个例子吗?
当前回答
如果一个集合是可迭代的,那么它可以使用迭代器迭代(因此可以在for每个循环中使用)。迭代器是遍历集合的实际对象。
其他回答
如果一个集合是可迭代的,那么它可以使用迭代器迭代(因此可以在for每个循环中使用)。迭代器是遍历集合的实际对象。
基本上来说,这两者都是密切相关的。
将Iterator视为一个接口,它帮助我们在一些未定义的方法(如hasNext(), next()和remove()的帮助下遍历集合。
另一方面,Iterable是另一个接口,如果由类实现,则强制该类为Iterable,并且是for - each构造的目标。 它只有一个名为iterator()的方法,该方法来自iterator接口本身。
当一个集合是可迭代的,那么它可以使用迭代器迭代。
为了了解,请访问以下内容:
ITERABLE: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Iterable.java
迭代器http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Iterator.java
问:Iterable和Iterator的区别? 答:
iterable:它与forEach循环相关 iterator: Is与Collection相关
forEach循环的目标元素应该是可迭代的。 我们可以使用Iterator从集合中逐个获取对象
java中存在可迭代对象。ḷang包 java中的迭代器。util包
只包含一个方法迭代器() 包含三个方法hasNext(), next(), remove()
1.5版引入 1.2版引入
实现Iterable接口允许一个对象作为foreach语句的目标。
class SomeClass implements Iterable<String> {}
class Main
{
public void method()
{
SomeClass someClass = new SomeClass();
.....
for(String s : someClass) {
//do something
}
}
}
Iterator是一个接口,它具有迭代元素的实现。Iterable是一个提供迭代器的接口。
除了ColinD和Seeker的答案。
简单来说,Iterable和Iterator都是Java集合框架中提供的接口。
可迭代的
如果一个类想要有一个for-each循环来遍历它的集合,它必须实现Iterable接口。但是,for-each循环只能用于向前循环该集合,并且不能修改该集合中的元素。但是,如果您想要的只是读取元素数据,那么它就非常简单,并且由于Java lambda表达式,它通常是一行。例如:
iterableElements.forEach (x -> System.out.println(x) );
迭代器
此接口使您能够遍历集合,获取和删除其中的元素。每个集合类都提供了一个iterator()方法,该方法返回指向集合起点的迭代器。这个接口相对于iterable的优势在于,通过这个接口,您可以在集合中添加、修改或删除元素。但是,访问元素需要比iterable多一点的代码。例如:
for (Iterator i = c.iterator(); i.hasNext(); ) {
Element e = i.next(); //Get the element
System.out.println(e); //access or modify the element
}
来源:
Java Doc Iterable Java Doc迭代器
推荐文章
- Java中对象的内存消耗是多少?
- 获取Spring应用程序背景信息
- 为什么在Java中使用静态嵌套接口?
- @Mock, @MockBean和Mockito.mock()的区别
- JDK 8中的PermGen消除
- 如何将CharSequence转换为字符串?
- 在Java中初始化一个long
- Java的数组indexOf在哪里?
- 同一个键下的多个值
- Java“虚拟机”vs. Python“解释器”的说法?
- 获取操作系统级别的系统信息
- 如何通过SFTP从服务器检索文件?
- Intellij错误地表示没有为自动连接存储库找到类型的bean
- Android构建脚本库:jcenter VS mavencentral
- 为什么我应该使用Deque而不是Stack?