cc0*_*cc0 2 java collections iterator
好吧,所以我有一个ArrayList (arrBok)
,它充满了book
对象(代码是挪威语,所以请不要注意它).我想创建一个遍历`ArrayList'中所有对象的公共方法.
当我执行代码时,它似乎只是在无限循环中运行,而不是产生任何返回值.
这是相关的(我希望,因为还有其他一些类涉及)代码的一部分;
public String listAll()
{
itr = arrBok.iterator();
while (itr.hasNext())
{
i++;
}
return "lol";
}
Run Code Online (Sandbox Code Playgroud)
这段代码没有任何用处,但我只是想知道它是否可以成功迭代它.
到目前为止我尝试过的;
如果bokArr (ArrayList)
是空的则进行测试,但事实并非如此.它里面有4个物体.
返回toString()
方法,itr
结果如下;
java.util.AbstractList$Itr@173a10f // < - 不确定这是否与任何内容相关
return itr.next().toString();
< - //似乎返回数组中的第一个对象,这有意义吗?T.J*_*der 13
引用的代码将无法编译,您缺少几个声明.但我想我得到了主旨.
hasNext
告诉你迭代器有一个下一个值,但不会带你到它.要做到这一点,你使用next
.所以这是一个无限循环,因为你永远不会打电话next
.
使用任何最新的编译器,您可以使用更简单的表示法:
for (Object book : arrBok) {
// ...do something with 'book' (or just increment your counter)...
}
Run Code Online (Sandbox Code Playgroud)
这会为您迭代集合(在本例中为list).
你只是忘了"移动"到下一个元素:
while (itr.hasNext()) {
// Get next element
Object o = itr.next();
// do what you want with your element...
}
Run Code Online (Sandbox Code Playgroud)
请注意,从Java 5开始,您可以使用以下语法迭代列表:
List<String> myList = getAListOfString();
for (String s : myList) {
// Your code
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5449 次 |
最近记录: |