Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΌΠ΅ΡΠΎΠ΄, Π΅ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-Π²Π»Π°Π΄Π΅Π»ΡΡΠ°?
ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π·Π° ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌΠΈ ΡΡΡΠ»ΠΊΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ»Ρ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, Π° Π½Π΅ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½ΠΈΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° A Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΡΠΎΠ½ΡΡ.
Π€Π°ΠΊΡ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π² ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π²Π΅ΡΡΠΈ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅. Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π²ΡΠ·ΠΎΠ²Π°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄. ΠΠ½Π° Π²Π΅Π΄Π΅Ρ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° Π½Π΅ Ρ ΡΠ°Π½ΡΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅Ρ Π½Π° ΡΡΡΠ»ΠΊΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°.
ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ invokedynamic. ΠΠ΄Π½Π°ΠΊΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΠΠ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ.
Java Guruπ€ #java
ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π·Π° ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌΠΈ ΡΡΡΠ»ΠΊΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ»Ρ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, Π° Π½Π΅ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½ΠΈΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° A Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΡΠΎΠ½ΡΡ.
Π€Π°ΠΊΡ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π² ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π²Π΅ΡΡΠΈ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅. Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π²ΡΠ·ΠΎΠ²Π°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄. ΠΠ½Π° Π²Π΅Π΄Π΅Ρ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° Π½Π΅ Ρ ΡΠ°Π½ΡΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅Ρ Π½Π° ΡΡΡΠ»ΠΊΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°.
ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ invokedynamic. ΠΠ΄Π½Π°ΠΊΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΠΠ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ.
Java Guruπ€ #java
π12π₯4β€3
ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ?
for/while. ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ-ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ size(). ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π°, Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ. ΠΠ»Π°ΡΠ° Π·Π° ΡΡΠΎ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
Iterator. ΠΠΠ-ΡΠΏΠΎΡΠΎΠ±: ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ iterator() ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Ρ Π½Π΅Π³ΠΎ next() ΠΏΠΎΠΊΠ° hasNext() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π’Π°ΠΊΠΎΠΉ Β«ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΈΡΒ» ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠ΄, Π½Π΅ ΠΎΡΠ΄Π°Π²Π°Ρ ΡΠ°ΠΌΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΡΡ Π΅ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
for Iterable. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
Π‘ΡΡΠΈΠΌΡ. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΡΡΠΈΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π½ΡΠΌ. ΠΡΠΎΠΌΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ forEach(), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΉ ΠΌΠΎΡΡΡ Java Steam API β ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ° ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π²Π΅ΡΠΈΡΡΡΠΉ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Java 8. Π‘ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. Π£ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ forEach Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈ replaceAll Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎ ΡΡΡΠΈΠΌΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, Π½ΠΎ Π±Π΅Π· ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ². ΠΠ½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΠΈΠΊΠ»Ρ for.
Java Guruπ€ #java
for/while. ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ-ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ size(). ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π°, Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ. ΠΠ»Π°ΡΠ° Π·Π° ΡΡΠΎ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
Iterator. ΠΠΠ-ΡΠΏΠΎΡΠΎΠ±: ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ iterator() ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Ρ Π½Π΅Π³ΠΎ next() ΠΏΠΎΠΊΠ° hasNext() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π’Π°ΠΊΠΎΠΉ Β«ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΈΡΒ» ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠ΄, Π½Π΅ ΠΎΡΠ΄Π°Π²Π°Ρ ΡΠ°ΠΌΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΡΡ Π΅ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
for Iterable. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
Π‘ΡΡΠΈΠΌΡ. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΡΡΠΈΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π½ΡΠΌ. ΠΡΠΎΠΌΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ forEach(), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΉ ΠΌΠΎΡΡΡ Java Steam API β ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ° ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π²Π΅ΡΠΈΡΡΡΠΉ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Java 8. Π‘ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. Π£ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ forEach Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈ replaceAll Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎ ΡΡΡΠΈΠΌΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, Π½ΠΎ Π±Π΅Π· ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ². ΠΠ½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΠΈΠΊΠ»Ρ for.
Java Guruπ€ #java
π14β€6π₯4
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π°?
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π² .java ΡΠ°ΠΉΠ»Π΅ Π±ΡΠ» Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΈ ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π»ΠΎ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°.
Protected ΠΈ private ΠΊΠ»Π°ΡΡΠΎΠ² Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ Π±ΡΠ²Π°Π΅Ρ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π° Π²ΠΎΡ Π½Π° package-protected ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠ΄ΠΎΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π° (ΠΈΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ°, Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½ΡΡΡΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.
Π’Π°ΠΊ ΡΡΠΎ ΠΎΡΠ²Π΅Ρ β ΠΌΠΎΠΆΠ΅Ρ.
Java Guruπ€ #java
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π² .java ΡΠ°ΠΉΠ»Π΅ Π±ΡΠ» Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΈ ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π»ΠΎ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°.
Protected ΠΈ private ΠΊΠ»Π°ΡΡΠΎΠ² Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ Π±ΡΠ²Π°Π΅Ρ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π° Π²ΠΎΡ Π½Π° package-protected ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠ΄ΠΎΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π° (ΠΈΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ°, Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½ΡΡΡΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.
Π’Π°ΠΊ ΡΡΠΎ ΠΎΡΠ²Π΅Ρ β ΠΌΠΎΠΆΠ΅Ρ.
Java Guruπ€ #java
π15π₯4β€2π1
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
30%
ΠΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
3%
ΠΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ protected
51%
ΠΠΎΠ΄ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Ρ.ΠΊ. ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ default Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠ°Ρ
7%
ΠΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ abstract
8%
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΡΠΈΡΡΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ
π19π₯5β€1
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΡΠΈΠΌΡ?
ΠΠ°ΠΊΠ΅Ρ java.util.stream β ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ (ΠΊΡΠΎΠΌΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ) Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ β ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π’ΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ Java Stream API β ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ (intermediate), ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ (terminal) ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ. Π‘Π°ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡ ΡΡΡΠΈΠΌ. ΠΠ° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π’Π΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΒ» ΠΏΠΎΡΠΎΠΊ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΡΠΌ ΡΡΡΠΈΠΌΠΎΠΌ. Π‘ΡΡΠΈΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ β Π²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ Π½Π°ΡΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ² β map-reduce. Map β ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, reduce β ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°Π±ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° β ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ StreamOpFlag:
β’ SORTED β ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ;
β’ ORDERED β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ ΠΎΠ΄Π°;
β’ DISTINCT β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π±Π΅Π· Π΄ΡΠ±Π»Π΅ΠΉ;
β’ SIZED β ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ;
β’ SHORT_CIRCUIT β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΎΠΌΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ.
Java Guruπ€ #java
ΠΠ°ΠΊΠ΅Ρ java.util.stream β ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ (ΠΊΡΠΎΠΌΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ) Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ β ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π’ΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ Java Stream API β ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ (intermediate), ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ (terminal) ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ. Π‘Π°ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡ ΡΡΡΠΈΠΌ. ΠΠ° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π’Π΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΒ» ΠΏΠΎΡΠΎΠΊ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΡΠΌ ΡΡΡΠΈΠΌΠΎΠΌ. Π‘ΡΡΠΈΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ β Π²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ Π½Π°ΡΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ² β map-reduce. Map β ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, reduce β ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°Π±ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° β ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ StreamOpFlag:
β’ SORTED β ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ;
β’ ORDERED β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ ΠΎΠ΄Π°;
β’ DISTINCT β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π±Π΅Π· Π΄ΡΠ±Π»Π΅ΠΉ;
β’ SIZED β ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ;
β’ SHORT_CIRCUIT β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΎΠΌΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ.
Java Guruπ€ #java
π7β€5π₯3
ΠΠ°ΠΊΠΈΠ΅ Π±ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΎΠΉ Π² Java?
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π§ΠΈΡΠ»Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² Java Ρ ΡΠ°Π½ΡΡΡΡ Π² Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ. ΠΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ΅ΠΊΠ°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠ°Π΄Π°Π΅Ρ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΠΊΡΡΠ³Ρ β ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (underflow/overflow).
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠΈΠΌΠ°, ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΡΡΡΡΠΈΠΊΡΠΎΠΌ *Exact ΠΈΠ· ΠΊΠ»Π°ΡΡΠ΅ Math. ΠΡΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠΎΡΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ JVM ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ. ΠΡΠ΅Π΄Π΅Π»Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ strictfp Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ IEEE 754. ΠΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡ ΡΠ΄ΡΠΈΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ArithmeticException.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° Π½ΠΎΠ»Ρ. ΠΡΠΎ ΠΆΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠ°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ· Math.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ β ΠΏΠΎΠΊΡΡΡΡ ΠΊΠΎΠ΄ Unit-ΡΠ΅ΡΡΠ°ΠΌΠΈ.
Java Guruπ€ #java
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π§ΠΈΡΠ»Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² Java Ρ ΡΠ°Π½ΡΡΡΡ Π² Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ. ΠΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ΅ΠΊΠ°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠ°Π΄Π°Π΅Ρ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΠΊΡΡΠ³Ρ β ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (underflow/overflow).
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠΈΠΌΠ°, ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΡΡΡΡΠΈΠΊΡΠΎΠΌ *Exact ΠΈΠ· ΠΊΠ»Π°ΡΡΠ΅ Math. ΠΡΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠΎΡΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ JVM ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ. ΠΡΠ΅Π΄Π΅Π»Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ strictfp Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ IEEE 754. ΠΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡ ΡΠ΄ΡΠΈΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ArithmeticException.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° Π½ΠΎΠ»Ρ. ΠΡΠΎ ΠΆΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠΎΡΠ°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ· Math.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ β ΠΏΠΎΠΊΡΡΡΡ ΠΊΠΎΠ΄ Unit-ΡΠ΅ΡΡΠ°ΠΌΠΈ.
Java Guruπ€ #java
π8β€4π₯3
ΠΡΠ»ΠΈΡΠ°ΡΡΡΡ Π»ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ?
Java ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠ° Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄. ΠΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ +=, &=, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ (compound assignment). Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
Π£ ΡΠ°ΠΊΠΈΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ x += y β ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ x = (XType)(x + y). Π’ΠΎ Π΅ΡΡΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊ ΡΠΈΠΏΡ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°.
ΠΠ΅Π·Π½Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° (ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ).
Java Guruπ€ #java
Java ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠ° Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄. ΠΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ +=, &=, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ (compound assignment). Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
Π£ ΡΠ°ΠΊΠΈΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ x += y β ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ x = (XType)(x + y). Π’ΠΎ Π΅ΡΡΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊ ΡΠΈΠΏΡ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°.
ΠΠ΅Π·Π½Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° (ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ).
Java Guruπ€ #java
π26π₯6β€4
ΠΠΈΡΠ°Π΅Ρ Π»ΠΈ var ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ?
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π² Java 10. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ var Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΊ Π½Π΅ΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠΎΠ² (type inference). Π’ΠΈΠΏ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ.
ΠΡΡΡΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ²ΠΎΠ΄ΠΎΠ². ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ var Π² ΠΏΠΎΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΈ Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅ ΠΊΡΠΎΠΌΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ β Π²Π°ΡΠΈΠ°Π½ΡΡ var x; ΠΈΠ»ΠΈ var x = null; Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ.
Π Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ β ΠΊ ΠΊΠΎΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ ΡΠ°ΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Π ΡΡΠΎ ΠΈ Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ²Π΅Ρ: Π½Π΅Ρ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΈΠΏ β ΡΡΡΠΎΠ³ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΡΠΏΡΡΠ΅Π½ΠΈΠ΅ β Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ diamond operator. Π ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ Π² Π½ΡΠΌ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ generic-ΡΠΈΠΏ, Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ var ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΈ ΡΠΈΠΏΠΎΠΌ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Object.
Java Guruπ€ #java
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π² Java 10. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ var Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΊ Π½Π΅ΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠΎΠ² (type inference). Π’ΠΈΠΏ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ.
ΠΡΡΡΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ²ΠΎΠ΄ΠΎΠ². ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ var Π² ΠΏΠΎΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΈ Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅ ΠΊΡΠΎΠΌΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ β Π²Π°ΡΠΈΠ°Π½ΡΡ var x; ΠΈΠ»ΠΈ var x = null; Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ.
Π Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ β ΠΊ ΠΊΠΎΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ ΡΠ°ΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Π ΡΡΠΎ ΠΈ Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ²Π΅Ρ: Π½Π΅Ρ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΈΠΏ β ΡΡΡΠΎΠ³ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΡΠΏΡΡΠ΅Π½ΠΈΠ΅ β Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ diamond operator. Π ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ Π² Π½ΡΠΌ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ generic-ΡΠΈΠΏ, Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ var ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΈ ΡΠΈΠΏΠΎΠΌ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Object.
Java Guruπ€ #java
π₯9π5β€1
Π§ΡΠΎ Π»ΡΡΡΠ΅, ArrayList ΠΈΠ»ΠΈ LinkedList?
Π‘Π°ΠΌΡΠΉ ΠΈΠ·Π±ΠΈΡΡΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π·Π½Π°Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΊΠΈΡΠΊΠΈ ArrayList, ΠΊΠΈΡΠΊΠΈ LinkedList) ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ . Π Π²ΠΎΠΏΡΠΎΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Vector β ΠΏΠ΅ΡΠ΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ArrayList, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Collections.synchronizedList().
ArrayList Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, LinkedList Π² Π΄Π²ΡΡΠ²ΡΠ·Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅. ΠΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ΅ΠΊΠ°Π΅Ρ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: ArrayList Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΈ ΡΠΎΡΡΠΎΠΌ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ capacity, LinkedList β Π½Π° ΠΊΡΠ°ΡΡ . Π ΡΠ΅Π»ΠΎΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ArrayList Π»ΡΡΡΠ΅.
Π‘ΡΠΎΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΊΡΠ°ΡΡ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Deque: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ Π±ΡΡΠ΅Ρ ArrayDeque.
Java Guruπ€ #java
Π‘Π°ΠΌΡΠΉ ΠΈΠ·Π±ΠΈΡΡΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π·Π½Π°Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΊΠΈΡΠΊΠΈ ArrayList, ΠΊΠΈΡΠΊΠΈ LinkedList) ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ . Π Π²ΠΎΠΏΡΠΎΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Vector β ΠΏΠ΅ΡΠ΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ArrayList, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Collections.synchronizedList().
ArrayList Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, LinkedList Π² Π΄Π²ΡΡΠ²ΡΠ·Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅. ΠΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ΅ΠΊΠ°Π΅Ρ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: ArrayList Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΈ ΡΠΎΡΡΠΎΠΌ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ capacity, LinkedList β Π½Π° ΠΊΡΠ°ΡΡ . Π ΡΠ΅Π»ΠΎΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ArrayList Π»ΡΡΡΠ΅.
Π‘ΡΠΎΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΊΡΠ°ΡΡ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Deque: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ Π±ΡΡΠ΅Ρ ArrayDeque.
Java Guruπ€ #java
π9β€4π₯3π³2
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
19%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
31%
Static method in A
41%
Static method in B
2%
RuntimeException
7%
Static method in A, Static method in B
π₯12π8π€£4β€2
ΠΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ArrayList ΠΏΡΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ?
ΠΠ±ΡΡΠ½ΠΎ ΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Β«ΡΡΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠ°ΠΊΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠΎΠ΄Π²ΠΎΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ArrayList, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΡΠΈΠΊΠ»Π° for, ΡΠ²Π»ΡΠ΅ΡΡΡ fail-fast, ΡΠΎ Π΅ΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. Π ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΡΠ±ΡΠΎΡΠΈΡ ConcurrentModificationException.
ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, Π° ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ for β ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅, Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΡΠΈ ΡΡΠΎΠΌ ConcurrentModificationException ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ β ΡΠ΄Π°Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ remove() ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ°ΡΠΈΠ°Π½Ρ ListIterator ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CopyOnWriteArrayList ΠΈ ConcurrentHashMap Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ ΠΈ ΠΈΠΌΠ΅ΡΡ fail-safe ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ.
Java Guruπ€ #java
ΠΠ±ΡΡΠ½ΠΎ ΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Β«ΡΡΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠ°ΠΊΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
for (String item : arrayList)
if (item.length() > 2)
arrayList.remove(item);
ΠΠΎΠ΄Π²ΠΎΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ArrayList, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΡΠΈΠΊΠ»Π° for, ΡΠ²Π»ΡΠ΅ΡΡΡ fail-fast, ΡΠΎ Π΅ΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. Π ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΡΠ±ΡΠΎΡΠΈΡ ConcurrentModificationException.
ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, Π° ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ for β ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅, Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΡΠΈ ΡΡΠΎΠΌ ConcurrentModificationException ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ β ΡΠ΄Π°Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ remove() ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ°ΡΠΈΠ°Π½Ρ ListIterator ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CopyOnWriteArrayList ΠΈ ConcurrentHashMap Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ ΠΈ ΠΈΠΌΠ΅ΡΡ fail-safe ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ.
Java Guruπ€ #java
π18β€5π₯4
ΠΠ°ΠΊΠΎΠ²Π° ΡΡΡΡΠΊΡΡΡΠ° Java Collections Framework? ΠΠΎΡΠ΅ΠΌΡ Map Π½Π΅ Collection?
Collection β Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Map β Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΡΡΠ΄Π° ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅, ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² put ΠΈ add.
Collection Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π³ΡΡΠΏΠΏΡ, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
π List β ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ (random access);
π Queue β ΠΎΠ±ΡΡΠ½ΠΎ FIFO-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΊΡΠ°Ρ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ Deque β Π΄Π²ΡΡΠ²ΡΠ·Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ;
π Set β Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ (Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ equals) Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ;
HashMap ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²ΠΈΠ΄Ρ Collection Π²ΡΠ·Π²Π°Π² Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ keySet(), entrySet() ΠΈΠ»ΠΈ values().
Java Guruπ€ #java
Collection β Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Map β Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΡΡΠ΄Π° ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅, ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² put ΠΈ add.
Collection Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π³ΡΡΠΏΠΏΡ, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
π List β ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ (random access);
π Queue β ΠΎΠ±ΡΡΠ½ΠΎ FIFO-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΊΡΠ°Ρ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ Deque β Π΄Π²ΡΡΠ²ΡΠ·Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ;
π Set β Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ (Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ equals) Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ;
HashMap ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²ΠΈΠ΄Ρ Collection Π²ΡΠ·Π²Π°Π² Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ keySet(), entrySet() ΠΈΠ»ΠΈ values().
Java Guruπ€ #java
π12π₯7
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ HashMap?
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π΅ΠΉΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΡΠ°Π½ΡΠΎΠ². ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° HashMap.
ΠΡΠ°Π½ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ:
π ΠΠ±ΡΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ: Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² table, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π±Π°ΠΊΠ΅ΡΡ (ΠΊΠΎΡΠ·ΠΈΠ½Ρ) β ΡΠΏΠΈΡΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΠ°Π½Π½ΡΠΌΠΈ Ρ ΡΡ-ΡΡΠΌΠΌΠ°ΠΌΠΈ;
π ΠΠ΅ΡΠ΅ΡΡΠ΅Ρ Ρ ΡΡ-ΡΡΠΌΠΌΡ Π΄Π»Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ int ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π² capacity ΡΡΠ΅ΠΉΠΊΠ°Ρ table;
π rehash β ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° table ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ threshold (capacity*loadFactor) Π·Π°Π½ΡΡΡΡ Π±Π°ΠΊΠ΅ΡΠΎΠ²;
π ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΆΠ°ΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΡΠ°Π·Π΄ΡΠ²ΡΠΈΠΉΡΡ table;
π ΠΠ²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² HashMap ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° β ΠΎΡΠΊΡΡΡΠ°Ρ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ;
π ΠΠ°ΡΠΈΠ°Π½ΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΠΏΠ΅ΡΠ΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Hashtable ΠΈ ΡΠΌΠ½Π°Ρ ConcurrentHashMap;
π ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Java 8: ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π² Π±Π°ΠΊΠ΅ΡΠ΅ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ 8 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΡΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°ΡΡΠ΅Ρ Ρ O(n) Π΄ΠΎ O(log(n));
π Π―Π²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΊΠ΅ΡΠ° 0 Π΄Π»Ρ ΠΊΠ»ΡΡΠ° null;
π Π‘Π²ΡΠ·Ρ Ρ HashSet β HashMap, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠΈ;
π ΠΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²;
ΠΠ±ΡΡΠΆΠ΄Π°Ρ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π²Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΡΠΎΠ½Π΅ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² equals/hashCode. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β TreeMap, LinkedHashMap.
Java Guruπ€ #java
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π΅ΠΉΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΡΠ°Π½ΡΠΎΠ². ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° HashMap.
ΠΡΠ°Π½ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ:
π ΠΠ±ΡΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ: Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² table, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π±Π°ΠΊΠ΅ΡΡ (ΠΊΠΎΡΠ·ΠΈΠ½Ρ) β ΡΠΏΠΈΡΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΠ°Π½Π½ΡΠΌΠΈ Ρ ΡΡ-ΡΡΠΌΠΌΠ°ΠΌΠΈ;
π ΠΠ΅ΡΠ΅ΡΡΠ΅Ρ Ρ ΡΡ-ΡΡΠΌΠΌΡ Π΄Π»Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ int ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π² capacity ΡΡΠ΅ΠΉΠΊΠ°Ρ table;
π rehash β ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° table ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ threshold (capacity*loadFactor) Π·Π°Π½ΡΡΡΡ Π±Π°ΠΊΠ΅ΡΠΎΠ²;
π ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΆΠ°ΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΡΠ°Π·Π΄ΡΠ²ΡΠΈΠΉΡΡ table;
π ΠΠ²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² HashMap ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° β ΠΎΡΠΊΡΡΡΠ°Ρ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ;
π ΠΠ°ΡΠΈΠ°Π½ΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΠΏΠ΅ΡΠ΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Hashtable ΠΈ ΡΠΌΠ½Π°Ρ ConcurrentHashMap;
π ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Java 8: ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π² Π±Π°ΠΊΠ΅ΡΠ΅ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ 8 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΡΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°ΡΡΠ΅Ρ Ρ O(n) Π΄ΠΎ O(log(n));
π Π―Π²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΊΠ΅ΡΠ° 0 Π΄Π»Ρ ΠΊΠ»ΡΡΠ° null;
π Π‘Π²ΡΠ·Ρ Ρ HashSet β HashMap, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠΈ;
π ΠΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²;
ΠΠ±ΡΡΠΆΠ΄Π°Ρ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π²Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΡΠΎΠ½Π΅ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² equals/hashCode. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β TreeMap, LinkedHashMap.
Java Guruπ€ #java
π₯13π8β€2
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
14%
Caught exception: Exception in process
51%
Processing resource Closing resource Caught exception: Exception in process
23%
Processing resource Caught exception: Exception in process
5%
Closing resource
7%
Closing resource Caught exception: Exception in process
π13π₯5β€3π€2
ΠΠ°ΠΊ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Set/Map?
ΠΠ»Ρ Map ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊΠ»ΡΡΠΈ/Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ Π²ΠΈΠ΄Ρ Collection, ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ Π² Π½ΠΎΠ²ΡΠΉ List ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Collections.sort. Π’ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ Set. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ.
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ SortedSet ΠΈ SortedMap.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ SortedSet Π΄Π°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ. ΠΠΎΡΡΠ΄ΠΎΠΊ Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΠΉ (ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Comparable), Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Comparator.
ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (tailSet), Π΄ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (headSet), ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ (subSet). ΠΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²Π΅ΡΡ Π½ΡΡ.
SortedSet ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ NavigableSet Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΡΠ½ΠΈΠ·Ρ (floor), ΡΠ²Π΅ΡΡ Ρ (ceiling), Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ (higher) ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ (lower) Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
ΠΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ SortedMap/NavigableMap ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ TreeSet ΠΈ TreeMap. ΠΠ½ΡΡΡΠΈ ΡΡΠΎ ΡΠ°ΠΌΠΎΠ±Π°Π»Π°Π½ΡΠΈΡΡΡΡΠΈΠ΅ΡΡ ΠΊΡΠ°ΡΠ½ΠΎ-ΡΡΡΠ½ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ. ΠΡ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΡΠΏΠΎΡΠΎΠ± Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ β Π²ΠΎΠΏΡΠΎΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°. ΠΡΡΠ³Π°Ρ Π»ΡΠ±ΠΎΠΏΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ· java.util.concurrent β ConcurrentSkipListMap.
Java Guruπ€ #java
ΠΠ»Ρ Map ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊΠ»ΡΡΠΈ/Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ Π²ΠΈΠ΄Ρ Collection, ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ Π² Π½ΠΎΠ²ΡΠΉ List ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Collections.sort. Π’ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ Set. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ.
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ SortedSet ΠΈ SortedMap.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ SortedSet Π΄Π°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ. ΠΠΎΡΡΠ΄ΠΎΠΊ Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΠΉ (ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Comparable), Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Comparator.
ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (tailSet), Π΄ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (headSet), ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ (subSet). ΠΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²Π΅ΡΡ Π½ΡΡ.
SortedSet ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ NavigableSet Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΡΠ½ΠΈΠ·Ρ (floor), ΡΠ²Π΅ΡΡ Ρ (ceiling), Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ (higher) ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ (lower) Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
ΠΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ SortedMap/NavigableMap ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ TreeSet ΠΈ TreeMap. ΠΠ½ΡΡΡΠΈ ΡΡΠΎ ΡΠ°ΠΌΠΎΠ±Π°Π»Π°Π½ΡΠΈΡΡΡΡΠΈΠ΅ΡΡ ΠΊΡΠ°ΡΠ½ΠΎ-ΡΡΡΠ½ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ. ΠΡ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΡΠΏΠΎΡΠΎΠ± Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ β Π²ΠΎΠΏΡΠΎΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°. ΠΡΡΠ³Π°Ρ Π»ΡΠ±ΠΎΠΏΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ· java.util.concurrent β ConcurrentSkipListMap.
Java Guruπ€ #java
π10π₯6β€4
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ immutable-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ?
Π Collections Framework ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Collections.unmodifiable*() Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠ½Π΅Ρ read-only ΠΎΠ±Π΅ΡΡΠΊΡ Π½Π°Π΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ Collections.synchronized*(), Π²Π½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡ, Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ.
ΠΡΡΠ³ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΌΠ΅ΡΠΎΠ΄ Collections.empty*(). ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΡΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΠΎΠΏΡΡΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ unmodifiable ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ UnsupportedOperationException.
Java Guruπ€ #java
Π Collections Framework ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Collections.unmodifiable*() Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠ½Π΅Ρ read-only ΠΎΠ±Π΅ΡΡΠΊΡ Π½Π°Π΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ Collections.synchronized*(), Π²Π½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡ, Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ.
ΠΡΡΠ³ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΌΠ΅ΡΠΎΠ΄ Collections.empty*(). ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΡΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΠΎΠΏΡΡΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ unmodifiable ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ UnsupportedOperationException.
Java Guruπ€ #java
π11π₯3
ΠΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅?
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, Π²ΡΠ·Π²Π°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅Π΅ ΡΠΈΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ Collections.synchronized*(). Π‘Π°ΠΌΡΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΈ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±Π΅ΡΡΠΊΡ Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ synchronized.
ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ ΡΠΎΡΡΠΎΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠ· ΡΡΠ΅Π½ΠΈΡ, Π»ΡΡΡΠ°Ρ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° β CopyOnWriteArrayList, ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΅Π³ΠΎ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CopyOnWriteArraySet. ΠΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π΅ΡΡΡ immutable. Program order Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ volatile Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅.
Π’ΡΠ΅ΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Concurrent-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ:
π ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ Ρ
ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ConcurrentSkipListMap, ConcurrentHashMap ΠΈ ConcurrentSkipListSet (Ρ
ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ)
π ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ConcurrentLinkedQueue ΠΈ ConcurrentLinkedDeque
π ΠΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ
ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ
Java Guruπ€ #java
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, Π²ΡΠ·Π²Π°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅Π΅ ΡΠΈΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ Collections.synchronized*(). Π‘Π°ΠΌΡΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΈ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±Π΅ΡΡΠΊΡ Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ synchronized.
ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ ΡΠΎΡΡΠΎΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠ· ΡΡΠ΅Π½ΠΈΡ, Π»ΡΡΡΠ°Ρ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° β CopyOnWriteArrayList, ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΅Π³ΠΎ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CopyOnWriteArraySet. ΠΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π΅ΡΡΡ immutable. Program order Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ volatile Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅.
Π’ΡΠ΅ΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Concurrent-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ:
Java Guruπ€ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
π11π₯3β€2