在寫程式碼的時候,有時候遇到for迴圈,寫到下面的時候有一點猶豫。
List<Data> dataList = ...;
for (Data d : dataList) {
if (d != null) { // 我需要這個判斷嗎?
// ...
}
}
遍歷的時候,是否需要對每個元素判空?換句話說,List是否可以允許add null。
然後我實驗了一下,發現竟然是可以的。(我之前的理解是不可以,add null可能會沒有發生任何事情)
static class Data {
String mName;
public Data(String s) {
this.mName = s;
}
@Override
public String toString() {
return "Data:" + mName;
}
}
public static void main(String[] args) {
List<Data> dataList = new ArrayList<>();
dataList.add(null);
dataList.add(new Data("shit"));
System.out.println(dataList.size()); // 這裡輸出的是2
for (Data d : dataList) {
System.out.println(d.mName); // 這裡會空指標異常
}
}
好了,這樣心中的疑惑就消除了,在遍歷的時候,對每個元素判空是非常必要的。
參考資料
關於為什麼ArrayList允許新增null https://softwareengineering.s...