[JAVA] Konvertieren Sie ein potenziell null-Array in einen Stream

Ich mache mir jedes Mal ein wenig Sorgen, deshalb schreibe ich es als Memorandum

Zusammenfassung

Alles, was Sie tun müssen, ist sich an die Idee zu erinnern, einen leeren Stream mit orElse zurückzugeben

Zusammenfassung


Optional.ofNullable(arr)
  .map(Arrays::stream).orElse(Stream.empty())
  .forEach(System.out::println);

Einzelheiten

Was du machen willst

Ich möchte ein Array streamen, das möglicherweise null ist.

Problem

Für Anweisungen erweitert, sind "Arrays # stream" und "Stream # of" nicht null-sicher. Es ist jedoch mühsam, jedes Mal null zu überprüfen.

Bei Verwendung der for-Anweisung


String[] arr = null;

for (String s : arr) { //Hier NullPointerException
  System.out.println(s);
}

Bei Verwendung von Arrays


String[] arr = null;

Arrays.stream(arr) //Hier NullPointerException
  .forEach(System.out::println);

// Stream#von auch intern Arrays#Scheint Stream zu verwenden
Stream.of(arr) //Hier NullPointerException
  .forEach(System.out::println);

Verwenden Sie Optional

Bei Verwendung von Optional


String[] arr = null;

Optional.ofNullable(arr)     //Optional an dieser Stelle<String[]>
     .map(Arrays.stream)     //Optional an dieser Stelle<Stream<String>>
     .orElse(Stream.empty()) //Stream an dieser Stelle<String>,Streamen Sie den Inhalt des Arrays
     .forEach(System.out::println);

Recommended Posts

Konvertieren Sie ein potenziell null-Array in einen Stream
So konvertieren Sie ein Array von Strings mit der Stream-API in ein Array von Objekten
Konvertieren Sie eine Zeichenfolge mit swift in ein zeichenweises Array
[Java] So konvertieren Sie ein Element eines Array vom Typ String in einen Int-Typ
So verwenden Sie ein Array für den TreeMap-Schlüssel
So konvertieren Sie eine Datei in ein Byte-Array in Java
Beim Zuweisen zu einem Array wird ein Nullwert eingegeben
[Java] Ich möchte ein Byte-Array in eine Hexadezimalzahl konvertieren
Konvertieren Sie ein Java-Byte-Array in eine hexadezimale Zeichenfolge
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
Ich möchte eine Schleife schreiben, die auf einen Index mit der Stream-API von Java 8 verweist
Suchen Sie eine Switch-Anweisung, die in einen Switch-Ausdruck konvertiert werden kann
[Java] Konvertiert ArrayList in Array
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
Möchten Sie eine IOException aus dem Stream werfen? In diesem Fall
Wenn Sie einen Anruf erhalten, senden Sie eine SMS an diese Nummer
Konvertieren Sie das Alphabet in 26 Basis + ungefähr Array-Länge
So erstellen Sie ein Java-Array
[Kleine Geschichte] Stream in Iterable konvertieren
[Java] Konvertieren Sie ein Array in ArrayList * Achtung
Um kein statischer Onkel zu sein
Konvertieren Sie das 2D-Array von Swift in das 2D-Array von C.
[Java] So drehen Sie ein zweidimensionales Array mit einer erweiterten for-Anweisung
Beachten Sie, dass VS Code + JUnit 5 unter Windows 10 verwendet werden kann
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Es scheint ein Wort "de-Java" zu geben.
So fügen Sie einen neuen Hash / Array hinzu
Ein Programm, das die Leistung von 2 bis 100 berechnet
[Java] Konvertiert Null vom Objekttyp in String-Typ
Warum Null schlecht sein soll
Entspricht einer Eigenschaft, deren Typ mit JsonDeserializer leer wird, wenn er leer ist
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
Eine Geschichte, dass eine Person, die ein solides iOS gemacht hat, möglicherweise von der Implementierung von Listener abhängig ist, wenn sie zu Android wechselt