我next()
对迭代器的方法有疑问。如果我的代码包含以下内容(arrayOfStrings
大小为4),请执行以下操作:
Iterator<String> it = arrayOfStrings.iterator(); //arrayOfString is ArrayList<String>
while(it.hasNext()) {
String e = it.next();
System.out.println(e);
}
在第一次迭代时,迭代器开始指向索引为0的元素?还是喜欢“指数-1”?
我问,因为据我所知,该next()
方法返回集合中的下一个元素。
因此,如果在第一次迭代时迭代器在next()
被调用时从索引0开始,它将返回索引1的元素,而我将无法对索引0的元素做任何事情?
可以将其next
视为两步过程。首先,它获得迭代器中的下一个项目,然后递增指针以指向下一个项目。因此,当您创建新的迭代器时,它将初始化为返回列表中的第一项(索引0)。
回溯的痕迹 对于路径[/sptestjs]的上下文中的servlet[sptestjs]的servlet.servelet.service()抛出异常[请求处理失败;嵌套异常是java.lang.ClassCastException:[ljava.lang.Object;无法强制转换为根原因java.lang.ClassCastException:[ljava.lang.Object;无法强制转换
给定这样一个对象: 用法如下: 我想用更面向对象的东西来代替这个while循环,比如: 因此,我可以很容易地,例如,使匹配流,坚持使用流畅的API等。 问题是,我不知道也找不到更简洁的方法来创建这个流或迭代器。像上面这样的匿名类对我来说太冗长了。 我曾希望在jdk中找到像或这样的东西,但到目前为止还没有运气。毫无疑问,像apache commons或番石榴这样的库为此提供了一些东西,但让我们说我不
问题内容: 考虑: 因此,按预期方式,通过更改同一对象来处理迭代器。 在这种情况下,我希望: 跳过每第二个元素:对的调用应使迭代器前进一次,然后循环进行的隐式调用应使它第二次进行-并将第二次调用的结果分配给。 没有。该循环将打印列表中的 所有 项目,而不会跳过任何项目。 我的第一个想法是可能发生这种情况,因为循环调用了它所传递的内容,并且这可能会提供一个独立的迭代器-事实并非如此。 那么,为什么在
问题内容: 我们都知道,在迭代时从集合中删除对象的最安全的“可能也是唯一安全的”方法是,首先检索,执行循环并在需要时删除; 我想了解但不幸的是,还没有找到深入的技术解释,即如何执行此删除操作, 如果: 会抛出“技术术语” 做什么?它是否会删除对象,中断循环并重新启动循环? 我在官方文档中看到: “删除当前元素。如果尝试调用之前未调用next()的方法,则抛出该异常。 “删除当前元素”部分使我想到了
我最近开始检查新的Java8特性。 我遇到过这个迭代器-它对集合进行迭代。 比如,我希望它从第2个值开始,然后迭代到第2个最后一个值。或者类似的东西--或者其他元素。 我要怎么做?