java - ListIterator.next() 返回 null

标签 java iterator listiterator

我的问题真的非常简单,但我在网上找到的一切都告诉我我的做法是正确的 - 但我显然误解了一些东西。

我有一个简单的 Java ListIterator,它在 while-hasNext() 循环中为 next() 返回 null。这是我对调试状态的评论代码:

[...]
ListIterator<Role> rolesIterator = currentUser.getRoles().listIterator();
// rolesIterator is now: java.util.ArrayList$ListItr
while( rolesIterator.hasNext() ) {
        Role roleObject = rolesIterator.next(); // extra step for debugging reasons
        String role = roleObject.getName(); // NullPointerException - roleObject is null
[...]

在我看来,如果没有 next() 对象,则不应进入循环 - 这就是我使用 hasNext() 检查的原因。我哪里理解错了,正确的方法是什么?

最佳答案

列表中有下一个元素,而这个下一个元素恰好为null。例如:

List<String> list = new ArrayList<>();
list.add("foo");
list.add(null);
list.add("bar");

上面的列表有 3 个元素。第二个为空。

修复填充列表的代码并确保它不会在列表中添加任何 null Role,或者在循环内检查 null 以避免 NullPointerExceptions。

关于java - ListIterator.next() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912785/

相关文章:

c++ - 如何使用迭代器有条件地从列表中删除元素?

java - Azure Java SDK - Azure 身份验证对象 - 过期和处理

java -/mnt/sdcard/Android/data 文件夹(或同等文件夹)是否存在于出厂时的所有硬件设备中?

C++:删除自定义迭代器上的后增量运算符是否安全?

c++ - 如何引用 LLVM 迭代器?

Java - 如何迭代对象数组列表并将满足特定条件的元素添加到另一个对象数组列表

java - Web 应用程序中的并发用户限制

java - 如何在非通用上下文中使用 GuavaOptions?

c++ - 读取 vector 迭代器的错误访问

java - linkedList.listIterator(linkedList.size()) 是否优化?