рдХрд┐рд╕реА рднреА рдЖрдИрдбреАрдИ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реИред рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛ рдЦреЛрдЬ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдЪрд┐рддреНрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Iterating рдЕрдХреНрд╖рдо рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдордп рдкрд░ рдЖрдк рдкреВрд░реНрдг рд╢реНрд░реЗрдгреА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╕рдВрдХрд▓рди рдЖрдИрдбреАрдИ рджреНрд╡рд╛рд░рд╛ рд╣реА рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рди рдХрд┐ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░реИрдбрд▓ рдореЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рдмрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕реНрд░реЛрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рддрддреНрдХрд╛рд▓ рд╡рд╛рд░рд┐рд╕ рдвреВрдВрдврдирд╛ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИред Foo
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ implements Foo
, рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрд╣рд╛рдВ extends Foo
рдХреЛ extends Foo
рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА new Foo(...) {...}
рдлреЙрд░реНрдо рдХреЗ рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдПрдВ new Foo(...) {...}
ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡реГрдХреНрд╖ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдвреВрдВрдвреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рдереЛрдбрд╝реА рд╕реВрдХреНрд╖реНрдорддрд╛ рд╣реИ: рд╢рд╛рдпрдж рдЖрдк com.example.goodcompany.Foo
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ org.example.evilcompany.Foo
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдкреИрд░реЗрдВрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рдкреНрд░реА-рдбрд╛рд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдЗрд╕рд╕реЗ рдореБрд╢реНрдХрд┐рд▓реЗрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреВрд░реНрдг рдирд╛рдо Foo
ред рдЖрдкрдХреЛ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЛ рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ)ред рдЕрдиреБрдХреНрд░рдордг рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдпрджрд┐, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ, рд╣рдореЗрдВ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдкреВрд░реНрдг рд╕рдВрдХрд▓реНрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдХрд┐ MyFoo.java
рдлрд╝рд╛рдЗрд▓ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рди рдХреЗрд╡рд▓ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо Foo
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, org.example.foo
рдкреИрдХреЗрдЬ рд╕реЗ org.example.bar
рдкреИрдХреЗрдЬ рд╕реЗ, рдФрд░ MyFoo.java
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рднреА рди рдмрджрд▓реЗрдВ, рдФрд░ Foo
рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
IntelliJ IDEA рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдПрдХ рдУрд░, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдЬрдм рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рддреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдХреНрдпрд╛ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдорд╣рд╛рди рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдореВрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкреВрд░реНрдг рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдкреНрд░рдХрд╛рд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╡рд╣ рд╕рдм рдХреБрдЫ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рд┐рддреНрд░ рдХрд╛ рдИрдорд╛рдирджрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реВрдк рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдг рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдВрдЪ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛрдЧреАред
рд╕реНрдерд┐рддрд┐ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдЬрдм рд╣рдо рдЬрд┐рд╕ рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдлрд┐рд░, рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдирд╛рдо рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рд╡рд┐рдзрд┐ рд▓рд┐рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВред рдЕрдм рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдХреНрдпрд╛ рдбрд╛рд▓рдирд╛ рд╣реИ, рдФрд░ рдЦреЛрдЬ рдкрд░ рд╕реАрдзреЗ рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ:
@FunctionalInterface public interface StringConsumer { void consume(String s); }
рдХреЛрдб рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реИрдореНрдмреНрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
() -> {}
рдпрд╣реА рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд▓реИрдореНрдмреНрдбреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЧрд▓рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдмрдирд╛рдо рдЧреИрд░-рд╢реВрдиреНрдпред рдЖрдорддреМрд░ рдкрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдХрд╣рддреЗ рд╣реИрдВ, lambda s -> list.add(s)
рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд░реНрдг list
рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ add
, рдФрд░ рд╕рдВрднрд╡рддрдпрд╛, рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдХреА рдЗрдВрдЬреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдпрд╣ рд╕рдм рд▓рдВрдмрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдмрдиреНрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╣рдо рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд╛рдВрдЪ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд┐рд▓реНрдЯрд░ рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реИрдореНрдмреНрдбрд╛ рдирд┐рдХрд▓ рдЬрд╛рдПрдВрдЧреЗред рд╡рд┐рдзрд┐ рд╕рдВрджрд░реНрднреЛрдВ рд╕реЗ рднреА рдмрджрддрд░ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдордиреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рд╛рдВ, рдХрднреА-рдХрднреА рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдЗрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд▓рдВрдмреЛрджрд░ рдпрд╛ рдПрдХ рд╡рд┐рдзрд┐ рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдпреЗ рдорд╛рдорд▓реЗ рд╕рднреА рд▓рдВрдмреЛрдВ рдХреЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд▓реИрдореНрдмрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
list.stream() .filter(s -> StringUtil.isNonEmpty(s)) .map(s -> s.trim()) .forEach(s -> list.add(s));
рдЗрди рддреАрди рд▓реИрдВрдмрдбреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрд░рдХреЛрдирд╕рдорд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреЛрдИ рдирд╣реАрдВред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ, рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдИрдбреАрдИ рдХреЛ рдЦреБрдж рдХреЛ рдзреЛрдЦрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд╕реЗ рд╕рдЯреАрдХ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ list
java.util.List
рдирд╣реАрдВ рд╣реИред рд╕рднреА рдкрд░ рдЬрд╛рдПрдВ, рдФрд░ list.stream()
java.util.stream.Stream
рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ list
рдкреНрд░рддреАрдХ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдордЬрд╝рдмреВрддреА рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЦреЛрдЬ рдХреЛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ java.util.List
рдЬрдЧрд╣ рд▓реЗ рд▓реЗрдВред рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде? рдЦреЛрдЬ рдХреЛ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдЦреИрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдорд╛рдирдХ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрдИ рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдПрдХ рд╡реИрдз рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЪрд╛рд░ рд╡рд┐рдХрд▓реНрдк рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВ: рд╢реВрдиреНрдп, рдЧреИрд░-рд╢реВрдиреНрдп, рдмреАрдирд┐рдпрди, рдФрд░ рдХреЛрдИ рднреА)ред рдФрд░ рдлрд┐рд░ рдХреНрдпрд╛? рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреВрд░реНрдг PSI рдЯреНрд░реА рдмрдирд╛рдПрдВ (рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░рд┐рддреНрд░ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдкреНрд░рдХрд╛рд░рд╛рдиреНрддрд░ рдФрд░ рдЕрдиреНрдп рд╕реНрдорд╛рд░реНрдЯ рд╕рд╛рдорд╛рди) рдФрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд▓рдВрдмреЛрджрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ? рдлрд┐рд░ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдк рд╕рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реВрдЪреА рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рд╣реА рд╣реЛрдВред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рдкреВрдЫреЗрдВ (рд╕рд╕реНрддрд╛)
- рдПрдХ PSI (рдорд╣рдВрдЧрд╛) рдмрдирд╛рдПрдБ
- рдкреНрд░рд┐рдВрдЯ рд▓рдВрдмреЛ рдЯрд╛рдЗрдк (рдмрд╣реБрдд рдорд╣рдВрдЧрд╛)
рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг 8 рдореЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рдПрдХ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИред рдХреЙрд▓реНрд╕ рдХреА рдПрдХ рдЬрдЯрд┐рд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдзреНрдпрд╛рдп 18 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЙрдЧреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдЬрд╛рд░реЛрдВ рдЕрдирдзрд┐рдХреГрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдХреЛрдиреЗ рдХреЛ рдереЛрдбрд╝рд╛ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ: рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдХреЗрд╡рд▓ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣реЗрдВ рдХрд┐, рдпрджрд┐ рд╣рдордиреЗ рд▓рдВрдмреЛ рдЯрд╛рдЗрдк java.util.function.Function<T, R>
рджрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдорд╛рдкрджрдВрдбреЛрдВ T
рдФрд░ R
рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд▓реМрдЯрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рддреЗ рд╕рдордп рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
static <T> void doSmth(Class<T> aClass, T value) {}
рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: doSmth(Runnable.class, () -> {})
ред рдлрд┐рд░ рдореЗрдордиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ T
рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рджреБрд░реНрд▓рдн рдорд╛рдорд▓рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди 10% рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: рдпрджрд┐ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЪрд▓реЛ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдХреЗрд╡рд▓ рдорд┐рдЯрд╛рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдХрдо рди рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдЬрдм рддрдХ рдорд┐рдЯрд╛рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдзрд╛рд░рд╛ рд▓реЗрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд┐рдо StringConsumer
рд╣рдорд╛рд░реЗ StringConsumer
рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
list
рдЪрд░ -> рдкреНрд░рдХрд╛рд░ java.util.List
List.stream()
рд╡рд┐рдзрд┐ - List.stream()
java.util.stream.Stream
рдкреНрд░рдХрд╛рд░Stream.filter(...)
рд╡рд┐рдзрд┐ тЖТ java.util.stream.Stream
рдЯрд╛рдЗрдк рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо filter
рддрд░реНрдХреЛрдВ рдкрд░ рднреА рдирдЬрд╝рд░ рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИStream.map(...)
рд╡рд┐рдзрд┐ - Stream.map(...)
java.util.stream.Stream
рдкреНрд░рдХрд╛рд░, рдЗрд╕реА рддрд░рд╣Stream.forEach(...)
рд╡рд┐рдзрд┐ тЖТ рдРрд╕реА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ, рдЗрд╕рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ Consumer
рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, StringConsumer
рдирд╣реАрдВ рд╣реИред
рдареАрдХ рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рди рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрддрд┐рднрд╛рд░рд┐рдд рддрд░реАрдХреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрджрд┐ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд╣реА рдУрд╡рд░рд▓реЛрдб рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрджреНрдпрдкрд┐ рдирд╣реАрдВ, рдпрд╣ рдХрднреА-рдХрднреА рд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
CompletableFuture.supplyAsync(Foo::bar, myExecutor).thenRunAsync(s -> list.add(s));
рдпрд╣рд╛рдВ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ
- рджреЛ
CompletableFuture.supplyAsync
рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдореЗрдВ рдПрдХ рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рджреЛ рд▓рдЧрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХреЛ рджреЛ рдЪреБрдиреЗрдВред рдпрд╣ рдПрдХ CompletableFuture
рджреЗрддрд╛ рд╣реИред thenRunAsync
рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА рджреЛ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЖрдк рдЙрд╕реА рддрд░рд╣ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк Runnable
, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ StringConsumer
рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдХрдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВ, рдпрд╛ рдХреБрдЫ рдХреЗ рдкрд╛рд╕ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреБрдХреНрдд рднреА рджрд┐рдЦрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреА рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
new StringBuilder().append(foo).append(bar).chars().forEach(s -> list.add(s));
new StringBuilder()
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ java.lang.StringBuilder
рдмрдирд╛рддрд╛ рд╣реИред рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрднреА рднреА рд▓рд┐рдВрдХ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рднрд▓реЗ рд╣реА new Foo<>(x, y, z)
, рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ Foo
рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВредStringBuilder.append
рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдПрдХ рддрд░реНрдХ рд▓реЗрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ java.lang.StringBuilder
рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреА java.lang.StringBuilder
, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ foo
рдФрд░ bar
редStringBuilder.chars
рд╡рд┐рдзрд┐ рдПрдХ рд╣реИ рдФрд░ java.util.stream.IntStream
рджреЗрддрд╛ рд╣реИредIntStream.forEach
рд╡рд┐рдзрд┐ рдПрдХ рд╣реИ рдФрд░ IntConsumer
рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдХрд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрди рд╕рднреА рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ ForkJoinPool.getInstance().submit(...)
рдпрд╛ ForkJoinPool.getInstance().submit(...)
рдХрд░рдиреЗ ForkJoinPool.getInstance().submit(...)
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрднреА рднреА рд▓реИрдореНрдмрдбрд╛ рдХреЛ рддреНрдпрд╛рдЧ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЕрдкреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рд╡рд┐рдзрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд▓реМрдЯрд╛рддреА рд╣реИред рдлрд┐рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдЪрд▓рд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдПрдХ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред рдпрд╣ рдореЗрд░реА рд╕реНрдЯреНрд░реАрдордПрдХреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣реИ AbstractStreamEx<T, S extends AbstractStreamEx<T, S>>
рдЬрд┐рд╕рдореЗрдВ S filter(Predicate<? super T> predicate)
рдЬреИрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рд▓реЛрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ StreamEx<T> extends AbstractStreamEx<T, StreamEx<T>>
ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдкреНрд░рдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ S = StreamEx
ред
рдЦреИрд░, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдмрд╣реБрдд рдорд╣рдВрдЧреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рд╛ред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдкреАрдПрд╕рдЖрдИ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рдВрдЪ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдо рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд▓рд╛рдЗрди 480 рдореЗрдВ рд▓рдВрдмреЛрджрд░ рдЙрд╕рдХреА рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдпреЗ рдЕрдкрдиреА рд╕реНрдЯреНрд░реАрдо рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ:
list.stream() .filter(s -> StringUtil.isNonEmpty(s)) .map(s -> s.trim()) .forEach(s -> list.add(s));
рдпрджрд┐ list
рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░, рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рд╡рд░реНрддрдорд╛рди рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдХреНрд░рдордг рдЪрд░рдг рдореЗрдВ рд╣рдо рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЫреЛрдЯрд╛ рдирд╛рдо рд╣реИ
List
ред рддрджрдиреБрд╕рд╛рд░, рдЕрдВрддрд┐рдо рд▓рдВрдмреЛ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рдЗрд╕ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдПрдХ рддрд░реНрдХ рд╕реЗ forEach
рд╡рд┐рдзрд┐ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рддрд░реНрдХ рд╕реЗ map
рд╡рд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рддрд░реНрдХ рд╕реЗ filter
рд╡рд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░, рд╢реВрдиреНрдп рддрд░реНрдХ рд╕реЗ stream
рд╡рд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рдХрд╛рд░ List
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рд╕рднреА рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдФрд░ рдкреАрдПрд╕рдЖрдИ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛ рд▓реИрдореНрдмреНрдбрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЫреЛрдЯреА рдирд╛рдо List
рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЦреЛрдЬ рдХрд░рдиреА рд╣реЛрдЧреАред рдмреЗрд╢рдХ, рд╣рдо рди рдХреЗрд╡рд▓ java.util.List
, рдмрд▓реНрдХрд┐ java.awt.List
рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреЛрдб рд╕реЗ рдХреБрдЫ рднреА рдкрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрди рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЙрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрдорд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдХреНрд╕рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдХреНрд╖рд╛рдПрдВ рдЦреБрдж рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, java.awt.List
рдореЗрдВ рдХреЛрдИ stream
рд╡рд┐рдзрд┐ рдирд╣реАрдВ stream
, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдХреБрдЫ рдЕрддрд┐рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЕрдВрдд рддрдХ рд╣реИ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдореНрдореАрджрд╡рд╛рд░ рдвреВрдВрдврддреЗ рд╣реИрдВ, рддреЛ рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рд╣рдо рдЕрднреА рднреА рдПрдХ рдкреВрд░реНрдг рдкреАрдПрд╕рдЖрдИ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪреЗрдВрдЧреЗред
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЦреЛрдЬ рдмрд╣реБрдд рдорд╣рдВрдЧреА рд╣реЛ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдИ List
рд╡рд░реНрдЧ рд╣реИрдВ), рдпрд╛ рддреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ, рдпрд╣ рдореВрд▓ рд╡рд░реНрдЧ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ), рдпрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╣реАрдВ рдмрд╛рдзрд┐рдд рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд▓реМрдЯрд╛рддреА рд╣реИред рддрдм рд╣рдо рддреБрд░рдВрдд рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рдЪрд┐рдирд┐рдВрдЧ рд╡рд┐рдзрд┐ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, map.get(key).updateAndGet(a -> a * 2)
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдерди рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЧрдпрд╛:
рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ updateAndGet
рд╡рд┐рдзрд┐ рдХреЗ рдПрдХрдорд╛рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде get
рд╡рд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЯрд╛рдЗрдк Map
рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдореЗрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ Map
- java.util.Map
ред рдЗрд╕рдХреА рдПрдХ get(Object)
рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдЬреЗрдиреЗрд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ V
рд▓реМрдЯрд╛рддрд╛ рд╣реИ V
рдлрд┐рд░ рд╣рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ (рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдХреЗ рд╕рд╛рде updateAndGet
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред AtomicInteger
, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рддреАрди рдРрд╕реЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ AtomicInteger
, AtomicLong
рдФрд░ AtomicReference
AtomicLong
AtomicInteger
, AtomicLong
рдФрд░ AtomicReference
рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдореЗрдордирд╛ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рдкреАрдПрд╕рдЖрдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдПрдХ рдЬреНрд╡рд▓рдВрдд рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде, рдЦреБрдж рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рддреАрди рд╣реИрдВ, рдФрд░ IntelliJ IDEA рджрд╕ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╛рдж рд╣реИ рдХрд┐ рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЙрдирдореЗрдВ рд╕реЗ рддреАрди рднреА рдереЗ, рдЖрдк рднреА рдЙрдирдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рдереЗ, рд▓реЗрдХрд┐рди рддрдм рдкрд░реНрдпрд╛рд╡рд░рдг рдиреЗ рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рджреЛ рд╕реЗрдХрдВрдб рдореЗрдВ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ред рдФрд░ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ, рддреАрди рд╕рд╛рд▓ рдореЗрдВ рдмрдврд╝реА рд╣реИ, рд╢рд╛рдпрдж рдкрд╛рдВрдЪ рдкреНрд░рддрд┐рд╢рддред рдмреЗрд╢рдХ, рдЖрдк рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╛рд░рд╛рдЬ рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХреНрдпрд╛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреА рдХрд┐ рдЖрдИрдбреАрдИ рдЗрддрдиреА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдзреАрдорд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЗрди рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЛ рдлрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдеред
рдФрд░ рд╢рд╛рдпрдж рд╣рдордиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЦреЛрдЬ рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддреА рд╣реЛред рдЕрднреА рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЖрдкрдиреЗ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛ 8 рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛, рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реМ рд▓рдВрдмреЛрджрд░ рд╣реИрдВред рдФрд░ рдЕрдм рдЖрдкрдХреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛, рд▓реИрдореНрдмрджрд╛рд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдПрдХ рд╕реМ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рджрд╕ рд╣рдЬрд╛рд░ рд╣реЛ рдЧрдпрд╛ред рдФрд░ рдЕрдм, рддреАрди рдЖрд╡рд╢реНрдпрдХ рд▓рдВрдмреЛрджрд░ рдЦреЛрджрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдИрдбреАрдИ рдХреЛ рд╕реМ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдЦреЛрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдХрд╣рд╛ "рд╣реЛ рд╕рдХрддрд╛ рд╣реИ" рдХреНрдпреЛрдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕ рдЦреЛрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдзрд╛рд░рд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЭрд░рдиреЗ рдХреЗ рдКрдкрд░ рднреА рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдмрдврд╝ рд░рд╣реА рд╣реИред