Java小ネタ:Listはadd(null)できる?
2022-02-23 21:04:34
コードを書いていると、時々forループに遭遇し、その下を書くのに少し躊躇することがあります。
List<Data> dataList = ... ;
for (Data d : dataList) {
if (d ! = null) { // Do I need this judgment?
// ...
}
}
トラバース時に、各要素に対してnullを判定する必要があるのでしょうか?言い換えれば、Listでnullの追加を許可することは可能でしょうか?
そこで、少し実験してみたところ、意外と可能であることがわかりました。(今までの理解では、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()); // Here the output is 2
for (Data d : dataList) {
System.out.println(d.mName); // here will be null pointer exception
}
}
さて、これで疑問が解消されましたね。トラバースの際には、各要素をnullにすることが肝心です。
参照
ArrayListがNullを追加できる理由について
https://softwareengineering.stackexchange.com/questions/163489/why-does-java-util-arraylist-allow-to-add-null
関連
-
javaの非静的メソッドを静的に参照することができない
-
Junitのユニットテストはjava.lang.Testを報告します。
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
ジャバアレイ
-
Junitのユニットテストエラー
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
Javaジェネリックの深い理解
-
JSoupは、新バージョンの正方学務システム(イントラネット-学務システム)にログインし、情報処理の詳細をクロールするシミュレーションを行います。
-
ロンボク版問題による血の海を思い出せ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
型に解決できない エラー解決
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
代入の左辺は変数でなければならない 解答
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
ApiModel と @ApiModelProperty の使用法
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
コレクション - PriorityQueueソースコード解析
-
Java上級(XLVI) ArrayList、Vector、LinkedListの類似点と相違点を簡単に説明できる。