Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有更好的逻辑可以在while循环中检查null?_Java_Loops - Fatal编程技术网

Java 有没有更好的逻辑可以在while循环中检查null?

Java 有没有更好的逻辑可以在while循环中检查null?,java,loops,Java,Loops,这是我的密码: while (itr.hasNext()) { System.out.println(itr.next()); } itr是迭代器的类型 如果itr为null,则我将面临null指针异常 我已经尝试使用if条件检查itr在while循环之前是否为null 如下图所示: if (itr != null) { while (itr.hasNext()) { System.out.println(itr.next()); } } 还有其他更好

这是我的密码:

while (itr.hasNext()) {
    System.out.println(itr.next());
}
itr
迭代器的类型

如果
itr
null
,则我将面临null指针异常

我已经尝试使用
if条件
检查
itr
while循环
之前是否为
null

如下图所示:

if (itr != null) {
    while (itr.hasNext()) {
        System.out.println(itr.next());
    }
}

还有其他更好的方法吗?

您的方法似乎更好,但这里有另一种方法:

while (itr != null && itr.hasNext()) {
    System.out.println(itr.next());
}

只有当您故意将Null分配给迭代器时,您正在使用的代码才会引发Null指针异常。例如,下面的代码不会抛出异常,即使exampleList没有被分配任何元素

List<String> exampleList = new ArrayList<String>();

Iterator<String> itr = exampleList.iterator();

while (itr.hasNext()) {
   System.out.println(itr.next());
}
List exampleList=new ArrayList();
迭代器itr=exampleList.Iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
但下面的代码将在您尝试在空列表上创建迭代器时引发空指针异常

List<String> exampleList = null;         
Iterator<String> itr = exampleList.iterator();

while (itr.hasNext()) {
   System.out.println(itr.next());
}
List exampleList=null;
迭代器itr=exampleList.Iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}

如果正在初始化创建迭代器的列表,请检查代码。如果操作正确,则无需检查空指针。

u也可以尝试反向循环:

if (null != itr && itr.hasNext()) {
  do {
    System.out.println(itr.next());
  } while (itr.hasNext());
}

只是想在组合中加入另一个答案,比如多样性:

while(Optional.ofNullable(itr).orElse(EmptyIterator.INSTANCE).hasNext()) {
    System.out.println(itr.next());
}
或者可能:

Optional.ofNullable(itr).map(item -> {
    while(item.hasNext()) {
        System.out.println(item.next());
    }
});

现在确定.map将如何处理println void返回。

如果“itr”为null,则不应接近此循环。