Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠΌΠ±Π΄ΠΎΠΉ ΠΈ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΌΠ΅ΡΠΎΠ΄
ΠΡΡΠΎΡΠ½ΠΈΠΊ: Reddit IntelliJ IDEA ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ. Π ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ? ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ½ΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°Π²Π½ΠΈΡΠ΅: myInstance::getStuff ΠΈ () ->myInstance.getStuff(). Π ΡΠ΅Π»ΠΎΠΌ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. ΠΠΎ Π΅ΡΠ»ΠΈ myInstance ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ null, Π° Π»ΡΠΌΠ±Π΄Π° Π²ΡΠ΄Π°ΡΡ null pointer (Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ) ΠΏΡΠΈ ΠΎΡΠ΅Π½ΠΊΠ΅ Π»ΡΠΌΠ±Π΄Ρ, ΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π° ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΡΠ»ΠΊΠ΅. Π ΡΡΠΎ? ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄, ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΠΈΠΉ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ try-catch Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ mightBeNull(Supplier<T> function), ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:try {
doStuff(function.get().getSomeMore().getSomeMore());
} catch (NullPointerException e) {
doOtherStuff();
}
ΠΡΠ»ΠΈ Π²ΡΠ·ΠΎΠ² mightBeNull(() -> myNullVariable.getStuff()) Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΠΎ βΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρβ: mightBeNull(myNullVariable::getStuff) Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ NullPointerException ΡΡΠ°Π·Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡ Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Stackoverflow, Π΅ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠΌΠ±Π΄Ρ Π½Π° ΡΡΡΠ»ΠΊΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π΅Π΅, Π° Π·Π½Π°ΡΠΈΡ, ΠΊΠ»Π°ΡΡ Π±ΡΡΡΡΠ΅Π΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡΡ Π² JVM. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΡΡΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΡΠΎΡΡ, Π½ΡΠΆΠ½Ρ ΡΡΡΡΡΠΈ Π½Π΅ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π»ΡΠΌΠ±Π΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΊΡΡΠΏΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π±Π΅ΡΠ΅ΡΡΡ Π»Π΅Π³ΠΊΠΎ.
Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠΌΠ±Π΄ΠΎΠΉ ΠΈ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ β Π²ΠΎΠΏΡΠΎΡ Π²ΠΊΡΡΠ° ΠΈ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² Π»ΡΠΌΠ±Π΄Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ, ΡΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ, ΠΈ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΈΠ³ΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ Π»ΡΠΌΠ±Π΄Ρ Π²ΡΠ½Π΅ΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ.
5 ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ String Null Π² Java
ΠΡΡΠΎΡΠ½ΠΈΠΊ: Gitconnected ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π² ββJava. Java ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° ΡΡΡΠΎΠΊΠΈ null, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ null, ΡΡΠΎ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ. ΠΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΌΠ½ΠΎΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ null Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² String.ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΡΡΠΎΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ +. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ null.String[] values = {"https", "://", "gist.", "github", ".com", null};
String result = "";
for (String value : values) {
result = result + value;
}
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
https://gist.github.comnull
Π₯ΠΎΡΡ ΠΌΡ Π½Π°ΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ, Π° ΡΡΠΎ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΎ, Π½Π° ΡΡΠΎ ΠΌΡ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ.
Π Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π° Java 8 ΠΈΠ»ΠΈ Π²ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ String.join() Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ, ΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ null.
String[] values = {"https", "://", "gist.", "github", ".com", null};
String result = String.join("", values);
ΠΡΠΎΠ³ ΡΠΎΡ ΠΆΠ΅:
https://gist.github.comnull
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°, ΠΌΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ ΡΡΡΠΎΠΊΡ.
public String nullToString(String value) {
return value == null ? "" : value;
}
1. String.concat()
String.concat() β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ String. ΠΠ½ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΡΡΡΠΎΠΊ.for (String value : values) {
result = result.concat(getNonNullString(value));
}
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ nullToString(), Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π΅Ρ null Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
2. StringBuilder
ΠΠ»Π°ΡΡ StringBuilder ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ append(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ append() Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ ΠΈ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ nullToString(), Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ null Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.String[] values = {"https", "://", "gist.", "github", ".com", null};
StringBuilder result = new StringBuilder();
for (String value : values) {
result = result.append(nullToString(value));
}
Π ΠΈΡΠΎΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
https://gist.github.com
3. ΠΠ»Π°ΡΡ StringJoiner (Java 8+)
ΠΠ»Π°ΡΡ StringJoiner ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΈ ΡΡΡΡΠΈΠΊΡ. ΠΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ add(). ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ nullToString(), ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ null Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.String[] values = {"https", "://", "gist.", "github", ".com", null};
StringJoiner result = new StringJoiner("");
for (String value : values) {
result = result.add(nullToString(value));
}
4. Streams.filter (Java 8+)
Stream API β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² Java 8, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±Ρ ΠΎΠ΄, Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΡ, ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.- ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ filter ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Predicate.
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΡΠ½ΠΊΡΠΈΠΈ Predicate ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Function, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅.
- ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
- ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ <T>, Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ (Boolean type).
- Predicate ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ filter.
String[] values = {"https", "://", "gist.", "github", ".com", null};
String result = Arrays.stream(values)
.filter(Objects::nonNull)
.collect(Collectors.joining());