簡體   English   中英

有沒有更好的邏輯可以在while循環中檢查null?

[英]Any better logic available to check null in while loop?

這是我的代碼:

while (itr.hasNext()) {
    System.out.println(itr.next());
}

itrIterator類型。

如果itrnull ,那么我將面臨null指針異常。

我嘗試使用if condition檢查while loop之前itr是否不為null

如下所示:

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

還有其他更好的方法嗎?

僅當您故意為Iterator分配null時,您使用的代碼才會引發Null Pointer異常。 例如。 即使沒有為exampleList分配任何元素,下面的代碼也不會引發異常。

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

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

while (itr.hasNext()) {
   System.out.println(itr.next());
}

但是下面的代碼將在您嘗試在Null列表上創建迭代器時引發空指針異常。

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

while (itr.hasNext()) {
   System.out.println(itr.next());
}

如果要初始化要在其上創建迭代器的列表,請檢查代碼。 如果操作正確,則無需檢查Null指針。

您的方法似乎更好,但這是另一種方法:

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

您也可以嘗試反向循環:

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返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM