for循环NullPointerException中的Java Iterator

Lui*_*uis 1 java iterator linked-list nullpointerexception

我不理解为什么一个显示java.lang.NullPointerException是用下面的代码抛出(在此行:迭代= chapterKeywords [Z] .iterator();):

Iterator<String> iterator;

        for (int z = 0; z < chapterKeywords.length; z++) {

            try {

                iterator = chapterKeywords[z].iterator();
                //exception thrown here after first iteration (i.e., when z = 1) and subsequent ones

                while (iterator.hasNext()) {

                    System.out.println(iterator.next());

                }

            } catch (Exception e) {
               ;
            }

        }
Run Code Online (Sandbox Code Playgroud)

虽然我得到NullPointerException,但代码完全执行.仅供参考,chapterKeywords是LinkedList数组,其中每个数组元素是LinkedList(例如,singleChapterKeywords).

LinkedList<String>[] chapterKeywords = new LinkedList[numFiles];
LinkedList<String> singleChapterKeywords = new LinkedList<String>();
Run Code Online (Sandbox Code Playgroud)

虽然该程序似乎运行良好,但我想了解为什么抛出NullPointerException,因为我想完全消除它.基本上,在for循环中的每次迭代开始时抛出异常.我已经修改了代码来创建循环内一个新的迭代,创建迭代的阵列等,但它们都产生相同的结果:的NullPointerException迭代= chapterKeywords [Z] .iterator(); .

任何有关消除此异常的帮助或见解都非常感谢.

所以,这是我的问题:

当迭代器变量被分配给新的迭代器时,为什么在每次后续迭代时抛出NullPointerException?

如何消除此异常?

再一次,TIA!

更新: 我认为 LinkedList 正确填充并且工作正常,但是,唉,事实并非如此!谢谢大家的无可估量的帮助!

And*_*s_D 5

看起来你已经填充了列表,但错过了将它们(一些)添加到数组中.

这将揭示您的问题:

for (int z = 0; z < chapterKeywords.length; z++) {
   if (chapterKeywords[z] == null) {
      System.out.println("No list found at array index " + z);
      continue;
   }
   iterator = chapterKeywords[z].iterator();
   while (iterator.hasNext()) {
      System.out.println(iterator.next());
   }
}
Run Code Online (Sandbox Code Playgroud)