Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ java
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Java β ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Java 8
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Java, ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Java 8, ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Java, ΡΠΈΠ»ΡΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² Java ΠΈ, ΠΈΠ»ΠΈ, ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅, ΡΠ°Π²Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ, ΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Java, ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Java 8.
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Java
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Java
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ Apple :
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ±Π»ΠΎΠΊΠΈ, Π²Π΅Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 150 Π³ΡΠ°ΠΌΠΌΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ filter Applies() ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² Apple :
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ java 8 ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ»ΡΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ:
ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² Java 8
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° :
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ(ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π΄ΡΡΠ³ΠΎΠΉ)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π ΠΈΠ· Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ². ΠΡΠΈ ΠΎΡΠ΅Π½ΠΊΠ΅ ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°, Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΆΠ½ΡΠΌ, ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π½Π΅ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π² ΠΊΠ»Π°ΡΡ ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ Apple :
ΠΡΠΎ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΠ»ΠΈ() ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ².
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΡΠΈΡΠ°Π΅Ρ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π» ΡΠ±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π·Π΅Π»Π΅Π½ΡΠΌΠΈ. Π£ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ±Π»ΠΎΠΊΠΎ Π±ΡΠ»ΠΎ Π·Π΅Π»Π΅Π½ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΎΡΡΠΈΡΠ°ΡΡ.
Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΡΡ(T t)
ΠΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Apple, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΈ ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ±Π»ΠΎΠΊΠ°.
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΡΠ°Π²Π΅Π½(ΠΎΠ±ΡΠ΅ΠΊΡ targetRef)
Π‘ΡΠΈΡΠ°ΠΉΡΠ΅, ΡΡΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ equals() Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° Apple:
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ±Π»ΠΎΠΊΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΠΈ Π²Π΅Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ±Π»ΠΎΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² Java.
Java 8 Killer Features. Π§Π°ΡΡΡ 2
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ°ΡΡΠΈ, ΠΈ ΡΠ°Π·Π±ΠΎΡ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ Java 8 Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ Java 8 Killer Features. Π§Π°ΡΡΡ 1.
Π§ΡΠΎ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π² Java 8?
6. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ
Java 8 ΠΏΡΠΈΠ½Π΅ΡΠ»Π° Ρ ΡΠΎΠ±ΠΎΠΉ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π°Π²Π½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π½Π°ΠΌ, Π½ΠΎ Π² ΡΠΎΡ ΠΆΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠ΅ΠΉ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠ° Π²Ρ ΠΈ ΡΠ°Π½ΡΡΠ΅ ΠΈΡ Π½Π΅ ΡΠ°Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Comparator ΠΈΠ»ΠΈ Runnable.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΡΠ°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ ΠΈ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΎΠ°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ @FunctionalInterface.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Java 8. Π― ΠΏΠΎΠΊΠ°ΠΆΡ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΡΠ΅Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° boolean.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ (and, or, negate).
Π€ΡΠ½ΠΊΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² (compose, andThen).
ΠΠΎΡΡΠ°Π²ΡΠΈΠΊΠΈ
Suppliers β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ
Consumers β ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ ΠΎΠ΄Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ.
ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΡ
ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΏΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π²Π΅ΡΡΠΈΡΠΌ Java. Java 8 Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Optionals β ΡΡΠΎ ΠΏΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ null.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ null, Π² Java 8 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Optionals Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ NullPointerException.
7. ΠΠΎΡΠΎΠΊΠΈ
java.util.Stream β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»ΡΠ½ΠΎ. Π’Π°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π° Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ Collection. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . ΠΠ»Ρ Π½Π°ΡΠ°Π»ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ. Map Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.
Π€ΠΈΠ»ΡΡΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ filter, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π·Π²ΡΡΠ°ΡΡ.
ΠΠ΄Π΅ΡΡ, ΠΌΡ Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ(ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ), ΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π°.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ: (World We love).
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ
Π ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ:
1. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉ Comparator
2. ΠΠ±ΡΠ΅ΠΊΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π½Π΅ ΡΠΎΡΡΠΈΡΡΡΡΡΡ. ΠΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ: (We love World).
ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π°ΡΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΡΠΈΡΠ»Π°.
ΠΠ°ΠΊ ΠΏΠΎ ΠΌΠ½Π΅, ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π±ΡΡΡΡΠΎ ΠΈ Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡΠΈΡ Π·Π°ΡΡΠ°Ρ. ΠΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅.
Match
ΠΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°Π±Π»ΠΎΠ½Ρ. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ. ΠΡΡΡ 3 Π²ΠΈΠ΄Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ:
1. ΠΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ allMatch()
2. Π₯ΠΎΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ anyMatch()
3. ΠΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ noneMatch()
Count
8. ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ
ΠΠΎ ΡΡΠΎΠ³ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. ΠΠ΄Π΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ°Π½Π΄Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ parallelStream(), ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅.
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΌΡ ΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»ΡΡΡΡ Π½Π° 2 Π±Π΅Π· ΠΎΡΡΠ°ΡΠΊΠ°, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π΅Π½ΠΈΠ΅ ΡΡΠΎ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ forEachOrdered(), ΠΎΠ½ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
9. Map
Π₯ΠΎΡΡ ΡΡΠΎΡ ΡΠΈΠΏ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΠΊ Π½Π΅ΠΌΡ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
getOrDefault() β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ null
forEach() β Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠ°ΡΡΡ
replaceAll() β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
putIfAbsent() β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ null, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
remove(Object key, Object value) β ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
computeIfAbsent() β ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ null Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ
computeIfPresent() β ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
merge() β ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΡΠΎ Π½Π΅ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
10. Date API
ΠΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π½Π°Ρ ΠΆΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π΄Π°ΡΠΎΠΉ. ΠΡΠ΅ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ java.time. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΠ²Π»ΡΡΡΡΡ immutable.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ:
java.time β ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π΄Π°ΡΠΎΠΉ. ΠΠ»Π°ΡΡΡ Π΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅.
java.time.chrono β Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π΄ΡΡΠ³ΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ(ISO-8601)
java.time.format β Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π΄Π°ΡΡ
java.time.temporal β ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ API Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
java.time.zone β ΡΠ°Π±ΠΎΡΠ° Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π·ΠΎΠ½Π°ΠΌΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
LocalDate
Clock
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π°ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π»ΠΎΠΊΠ°Π»ΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡΠ°Π½Ρ Π΄Π°ΡΡ.
Timezones
ΠΠΎΡΡΡΠΏ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π·ΠΎΠ½Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ ΡΠ°Π±ΡΠΈΠΊΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
ZoneRules[currentStandardOffset=+01:00]
ZoneRules[currentStandardOffset=-03:00]
DateTimeFormatter
ΠΡΠ²Π°Π΅Ρ ΡΡΠΎ Π΄Π°ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈ Π½ΡΠΆΠ½ΠΎ Π΅Π΅ ΠΊΠ°ΠΊ-ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±:
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°ΡΡ Π·Π° Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π΄Π°ΡΡ Π² ΡΡΠΎΡ ΠΆΠ΅ ΡΠΎΡΠΌΠ°Ρ:
21.03.2014 β 12:00
ΠΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ, ΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°Ρ Π½Π° ΠΎΡΡ. ΡΠ°ΠΉΡΠ΅.
11. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ Annotation Π΄Π²Π°ΠΆΠ΄Ρ, ΠΏΡΠΎΡΡΠΎ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. Π Π°Π½ΡΡΠ΅ ΠΌΡ Π± ΠΏΠΈΡΠ°Π»ΠΈ Π²ΠΎΡ ΡΠ°ΠΊ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Repeatable ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅:
ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ ΡΠΈΠΏΠ°ΠΌ targetβΠΎΠ² Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΡ .
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Java
Π’Π΅ΡΠΌΠΈΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ Π² Java 8. ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ (Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ) ΠΌΠ΅ΡΠΎΠ΄. ΠΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π΅ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ.
ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄, ΠΈ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ±ΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ, Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ . ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ.
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ
ΠΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π²ΠΈΠ΄Ρ Π΄Π»Ρ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Function
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Function interface(java.util.function.Function) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ (ΠΌΠ΅ΡΠΎΠ΄), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Function Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ Π²ΡΡΠ΅, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΡ .
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Function, β ΡΡΠΎ apply(). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
Π ΡΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ apply(), ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Long Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Long. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° AddThree:
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Function Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Function ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π° Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ adderLambda, Π° Π½Π΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠΎΡΠ΅, ΠΏΠ»ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ.
Predicate
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Java Predicate, java.util.function.Predicate, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true ΠΈΠ»ΠΈ false:
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Predicate ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ test(), Π½ΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Predicate, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Predicate, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
ΠΡΠ° Π»ΡΠΌΠ±Π΄Π°-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Predicate ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΠΊΠ»Π°ΡΡ.
UnaryOperator
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Java UnaryOperator ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°:
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ UnaryOperator ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ ΡΠ½ΠΎΠ²Π° β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
BinaryOperator
BinaryOperator β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΌΠΌΠΈΡΡΡΡ, Π²ΡΡΠΈΡΠ°ΡΡ, Π΄Π΅Π»ΡΡ, ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ ΠΈ Ρ. Π΄. ΠΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ΅ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°.
Supplier
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Supplier β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΈΠ΄ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
ΠΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Java Supplier Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Integer ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ 0 Π΄ΠΎ 1000.
Consumer
Consumer β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ», ΠΈΠ»ΠΈ ΠΏΠΎ ΡΠ΅ΡΠΈ ΠΈ Ρ. Π΄. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ:
Java Predicate
last modified November 12, 2021
Java Predicate tutorial shows how to use predicates in Java. With predicates, we can create code that is more clean and readable. Predicates also help to create better tests.
Predicate
in general meaning is a statement about something that is either true or false. In programming, predicates represent single argument functions that return a boolean value.
Java Predicate
Predicates in Java are implemented with interfaces. Predicate is a generic functional interface representing a single argument function that returns a boolean value. It is located in the java.util.function package. It contains a test(T t) method that evaluates the predicate on the given argument.
Java Predicate example
The following example creates a simple Java Predicate.
In the example, the predicate is used to filter integers.
This is a Java class implementing the Predicate interface. Its test method returns true for values bigger than five.
We have a list of integer values.
A BiggerThanFive is instantiated.
The predicate object is passed to the filter method to get all values from the list that are bigger than five.
Java Predicate with lambda
Java lambda expression simplifies the creation of Java Predicates.
The example filters integer values; this time we use Java lambda expression, which makes the code much shorter.
This is a one-liner that creates the predicate.
Java Predicate removeIf
The ArrayList’s removeIf method removes all all elements that satisfy the given predicate.
We have a list of words. We remove all words from the list that have three latin characters.
Java Predicate Collectors.PartitioningBy
We have a list of integers. The list is partitioned into two sublists: positive values and negative values.
Java Pattern.asMatchPredicate
The Pattern.asMatchPredicate creates a predicate that tests if a pattern matches the given input string.
We create predicate from a regex pattern with Pattern.asMatchPredicate and apply it to the filter method.
Java Predicate Stream.allMatch
The Stream.allMatch method returns a boolean value indicating whether all elements of the stream match the provided predicate.
In the example, we check if all the values of two collections have only positive values.
Java Pattern.asPredicate
The Pattern.asPredicate method creates a predicate that tests if this pattern is found in a given input string. The Stream.AnyMatch method returns a boolean value indicating whether any elements of the stream match the provided predicate.
We have a list of words. We check if there is a word that has three latin characters.
Java Predicate Stream.Iterate
The Stream.Iterate method returns a sequential ordered stream produced by iterative application of the given function to an initial element, conditioned on satisfying the given predicate.
Java Predicate multiple conditions
The next example uses a predicate with two conditions.
In the example, we create a list of countries. We filter the list by the country name and population.
The predicate returns true for countries that start with ‘I’ and their population is over ten million.
Two countries from the list fulfill the conditions: Iran and India.
Java Predicate.isEqualΠ²ΠβΉ
The example checks if two lists of users are equal.
Java IntPredicate
We define an array of integers.
An IntPredicate is created; it returns true for int values bigger than five.
We create a stream from the array and filter the elemetnts. The filter method receives the predicate as a parameter.
Java BiPredicate
The BiPredicate is used to pick up words which have three and four latin characters.
Composing predicates
With and and or methods we can compose predicates in Java.
We combine two predicates with the and method; we get integers that are bigger than three and smaller than nine.
With the or method, we get values that are equal either to six or nine.
Java apply list of predicates
In the following example, we work with a list of predicates.
With the help of the reduce method, we apply the list of predicates to the list of words.
Java Predicate with method reference
Predicates can be created easily with method references. These are created with :: operator.
The example checks if there is any empty string in the list.
Negating predicates
The negate method returns a predicate that represents the logical negation of the given predicate.
The example demonstrates the usage of the negate method.
We have a predicate that returns true for values bigger than five.
We filter all integers that are bigger than five.
With the negate method, we get the opposite: values lower or equal to four.
Java predicate as method parameter
Predicates can be passed as method parameters.
In the example, we pass a predicate function as the second parameter to the eval method.
In this tutorial, we have worked with Java Predicates.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² Java 8 β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΡΠ΅Π±Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ Ρ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠ»ΡΠΆΠ°Ρ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π° Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java. Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ Π½ΡΠ°Π½Ρ β Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Java 8 Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π½Π΅ΡΠ²Π½ΠΎ ΡΡΠΈΡΠ°Π»ΠΈΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌΠΈ. Π‘ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ JDK 8 ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΉ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, ΠΈΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΌΠ΅ΡΠΎΠ΄ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
functionalInterface, Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΠ΄ΠΈΠ½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β abstractMethod(). ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ @FunctionalInterface Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°, Π½ΠΎ Ρ Π±Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Ρ ΠΎΡΡ Π±Ρ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Ρ:
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π°ΠΌ ΡΠΎΠΎΠ±ΡΠΈΡ, ΡΡΠΎ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² Π½Π΅Π³ΠΎ Π²ΡΠΎΡΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β abstractMethod1(). ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΡ:
ΠΊΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ?
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ β Π²ΡΠ΅ ΡΡΠΈ, Π² ΡΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @FunctionalInterface. ΠΠ΅ΡΠ²ΡΠΉ β Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΎΡΠΎΠΉ β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΠ΄ΠΈΠ½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π’ΡΠ΅ΡΠΈΠΉ β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΎΠΌΠ½ΠΈΡΠ΅ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ Ρ Π²Π°Ρ Π±ΡΠ» ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ:
ΠΡΠ΅ΡΠ΅Π΄Ρ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ:
ΠΡΠ²ΠΎΠ΄:
AudiA3
AudiA3
AudiA6
ΠΠ΅ΡΠΎΠ΄ printTest(), ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½Π°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΌΠ°ΡΠΈΠ½Ρ ΠΈΡΡΠΈΠ½Π΅(Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄Π° ΠΈ Π±Π΅Π½Π·ΠΈΠ½ΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ), Π΅ΡΠ»ΠΈ Π΄Π° β ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π² ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ:
ΠΠ΅ΡΠ²ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Car, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π° c.isFullDrive(). ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Java ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° printTest(), ΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ test(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Car ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π° Π½Π΅Π³ΠΎ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΡΡΡ. Π ΡΠ°ΠΌΠΎΠΌ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΠ΅ Car ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡ ΠΌΡ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄.
ΠΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ.
Π£ΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Π² Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠΌ Π±ΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠΌ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΈΠΏ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΠ°ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° ΠΈΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΌΠ°ΡΠΈΠ½Ρ:
Π ΠΊΠ»Π°ΡΡ Car Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΠΎΡΠΎΡΠ°Ρ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π³ΡΡΡΠ΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΠΎΡΠΎΡΠ°Ρ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΌΠ°ΡΠΈΠ½Ρ β getRPM() ΠΈ getName(). Π’Π°ΠΊ ΠΆΠ΅ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π΄Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° GetName ΠΈ GetRPM (Π½Π΅ Π»ΡΡΡΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Ρ Π·Π½Π°Ρ, Π½ΠΎ ΡΠΊΠΎΡΠΎ ΠΌΡ ΠΎΡ Π½ΠΈΡ ΠΈΠ·Π±Π°Π²ΠΈΠΌΡΡ). Π Π³Π»Π°Π²Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΠΎΡΠΎΡΠ°Ρ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Ρ β printName() ΠΈ printRPM(). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π² Π½ΠΈΡ , ΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡ ΠΎΠΆΠ΅ΡΡΡ, ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ β String ΠΈ Integer. ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, Π² ΡΡΠΎΠΌ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ:
ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π½Π°ΠΌ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π»ΡΠ±ΡΠΌΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌΠΈ ΠΊΠ»Π°ΡΡ Car ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² Java 8.
Π Π°Π½Π΅Π΅ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, Π½ΠΎ Π·Π°ΡΠ°ΡΡΡΡ Π² ΡΡΠΎΠΌ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² JDK 8 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ java.util.function. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ :

Π‘ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π² Java 8, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ Oracle. ΠΠ°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
Supplier.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΡΠΎΠΊΡ ΠΈ Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π° ΡΠΊΡΠ°Π½:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ import java.util.function*. ΠΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΡΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄Π° main() ΠΌΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Supplier Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ String ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ sup. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Ρ ΡΠΈΠΏΠΎΠΌ String:
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Supplier β ArrayList ΠΈ Π²ΡΠΎΡΠΎΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ ΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π΄Π»Ρ ArrayList β String. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Supplier ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
Consumer ΠΈ BiConsumer.
ΠΡΠ»ΠΈΡΠΈΠ΅ Consumer ΠΎΡ BiConsumer ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π΄Π»Ρ BiConsumer ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ ΠΌΠ΅ΡΠΎΠ΄Π° accept Π΄Π²Π°. ΠΡΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Π΅ΡΠ»ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΡ Bi Π·Π½Π°ΡΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Consumer Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ Π² Π½Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ, Π½Π° ΡΠΊΡΠ°Π½. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ BiConsumer:
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Π² Π»ΡΠΌΠ±Π΄Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠΎΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² BiConsumer ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ²:
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· BiConsumer ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² (String ΠΈ Integer) ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ HashMap Π΄Π²ΡΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠΈ β ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Predicate ΠΈ BiPredicate.
Π ΠΌΠ΅ΡΠΎΠ΄ test() ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ:
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ²Π΅Π΄Π΅Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ true. Π Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ isEmpty(), ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π²Π½ΠΈΠΌ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ BiPredicate:
Π ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π² Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²Π΅ΡΠ½ΡΠ»ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° equals().
Function ΠΈ BiFunction.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Function:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π² Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π² ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡΡ ΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Integer). ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΡΡΠΎΡΠ½ΡΡ Π±ΡΠΊΠ², Π² ΡΡΡΠΎΠΊΡ ΠΈΠ· ΠΏΡΠΎΠΏΠΈΡΠ½ΡΡ Π±ΡΠΊΠ²:
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° BiFunction ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠΌ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ:
ΠΠ΅ΡΠ²ΡΡ Π΄Π²Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² BiFunction ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΈΠΏ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΡΠ΅ΡΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ.
UnaryOperator ΠΈ BinaryOperator
ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Function ΠΈΠ»ΠΈ BiFunction:
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ UnaryOperator Π΄Π»Ρ ΡΠ΅Π²Π΅ΡΡΠ° ΡΡΡΠΎΠΊΠΈ:
ΠΠ°ΡΡΠ°Π»Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ BinaryOperator, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠΌ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (Π΄Π²Π° Π²Ρ
ΠΎΠ΄Π½ΡΡ
ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ) Π² ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ β StringBuilder. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² UnaryOperator ΠΈ BinaryOperator ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΠΈΠΏΠ° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΏΠΎΠΌΠΈΠΌΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΡΠ΅Π±Π΅ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠΈΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Π½ΠΎ Π² ΡΡΠ΄Π΅ ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠΌΠΎΡΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Oracle ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² Java 8 Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ².
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π°ΠΌΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΡΠ²ΠΎΠΈΡ ΡΡΠ°ΡΡΠΈΡ Π±ΡΠ°ΡΡΠ΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅:

ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ, ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΡΡ ΠΎΠΆ Ρ ΡΠ΅ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅ Π΄Π»Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ . Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Function Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠΏ, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ±ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ, Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ. BiConsumer, BiPredicate ΠΈ BiFunction Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΡ Π½Π΅Ρ. Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ, Π² Java ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ²:


