我正在浏览以下代码示例:
public class GenericTest {
public static void main (String[] args) {
ArrayList<String> myList = new ArrayList<String>();
String s1 = "one";
String s2 = "two";
String s3 = "three";
myList.add(s1); myList.add(s2); myList.add(s3);
String st;
Iterator<String> itr = myList.iterator();
while (itr.hasNext()) {
st = itr.next();
System.out.println(st);
}
}
}
我想知道使用Iterator接口的实现而不是使用普通的for-each循环有什么好处?
for ( String str : myList ) {
System.out.println(str);
}
如果此示例不相关,那么当我们应该使用Iterator时会是一个好的情况吗?
谢谢。
该 for-each循环 与Java 5中引入的,所以它不是那么“老”。
如果只想迭代一个集合,则应为每个循环使用
for (String str : myList) {
System.out.println(str);
}
但是有时hasNext()
“普通的” 迭代器的 方法对于检查 迭代器 是否还有更多元素非常有用。
for (Iterator<String> it = myList.iterator(); it.hasNext(); ) {
String str = it.next();
System.out.print(str);
if (it.hasNext()) {
System.out.print(";");
}
}
您也可以调用it.remove()
以删除next返回的最新元素。
并ListIterator<E>
提供双向遍历it.next()
和it.previous()
。
因此,它们不是等效的。两者都需要。
我知道这个问题在这个论坛上已经被问过好几次了。但我仍在发帖,因为没有一个答案看起来是具体的。专家们,你们能帮我理解什么时候使用迭代器吗。当我们有一个非常大的数据集时,我们是理想地使用它,还是当我们有大量数据要返回时,将其用作方法的返回类型?
问题内容: 我正在尝试使用迭代器遍历我的日志列表中的列表。目标是搜索包含与新日志相同的电话号码,类型和日期的日志 但是,我在条件语句中得到了java.util.NoSuchElementException。有谁知道可能导致问题的原因? 我的密码 问题答案: 您在一次迭代中调用了很多次,迫使移至一个不存在的元素。 代替 用 每次调用时,它都会向前移动基础光标。
为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和获取集合中的元素.该对象就叫做迭代器(Iterator)。
问题内容: 在回答中,用户说了这样的话:“带有ArrayLists的迭代器的一个大用例是,当您要在迭代时删除元素时”。 即使使用Java中的ArrayList的remove方法也可以实现。我的问题是为什么我们在ArrayList中需要迭代器? 考虑以下代码: 谁能解释迭代器的意义?如果可以用代码解释我,那将是很棒的。 问题答案: 如前所述,迭代器用于迭代数组内容时要删除的内容。如果您不使用迭代器,
为什么JSF2/Facelet的ui:repeat不接受java。util。迭代器的值?可以在迭代器后面隐藏如此多的实现和内存节约,因为长度不需要知道,所以拥有它是非常有用的。但是相反,我需要将迭代器转换为列表,并抛弃所有优点,以便ui:repeat。 可能有阶段、时间或可序列化的原因,但我对可用文档的浏览并没有给出这些原因。我们还没有使这一不可能成为可能的科学吗?