gpt4 book ai didi

java - 迭代器接口(interface) SCJP

转载 作者:行者123 更新时间:2023-12-01 23:08:33 25 4
gpt4 key购买 nike

import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class TryMe {

public static void main(String args[]) {

List list = new LinkedList<String>();

list.add("one");
list.add("two");
list.add("three");

Collections.reverse(list);

Iterator iter = list.iterator();

for (Object o : iter) {
System.out.print(o + " ");
}
}
}

这个问题来自 SCJP,我在理解迭代器和可迭代时遇到问题。

我知道迭代器是一个带有迭代器方法的接口(interface)。为什么我们不能在迭代器的情况下使用 for every 循环?编译器说:只能迭代数组或 java.lang.iterable 的实例。这是什么?我尝试了很多搜索但没有得到答案

请回复

最佳答案

Iterable 之间存在差异和Iterator 。安 Iterator 是一个迭代另一个对象的元素的对象,Iterable 。安 Iterable 是包含元素并提供Iterator的东西迭代 iterator() 的对象(使用 Iterable 方法)的元素。

增强的for循环必须采用 Iterable ,这样就可以调用 iterator()获得有保证的新Iterator隐式迭代元素。

这是由 JLS, Section 14.14.2 强制执行的:

The enhanced for statement has the form:

EnhancedForStatement:
for ( FormalParameter : Expression ) Statement

The type of the Expression must be Iterable or an array type (§10.1), or a compile-time error occurs.

关于java - 迭代器接口(interface) SCJP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22390686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com