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,则不应接近此循环。