рдХрдИ рдиреЗ рд╣рд╛рд╕реНрдХреЗрд▓ рдФрд░ рдХреНрд▓реЛрдЬрд░ рдЬреИрд╕реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХрд╛рд▓рд╛ рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВред рдпрд╣ OOP рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреНрдпрд╛ рдЙрд╕ рдкрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рддрдирд╛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╣рд╛рдБ, рдЬрд╛рд╡рд╛ 8 рд╣реИ рдФрд░ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рд╣реИред рдпрд╣ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдХрджрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдпрд╣ рд╣рд╛рдБ рдирд┐рдХрд▓рддрд╛ рд╣реИред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдХреНрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдЪрд░ рдФрд░ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдЧрдгрдирд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдоред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЬрд▓реНрдж рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВред
рдЖрдЗрдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдРрд╕реА рдХрд┐рд╕реА рднреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп - рд╕рдВрд░рдЪрдирд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕реНрддрд░ рдкрд░ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдЕрдВрдд рддрдХ рдРрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рд╢рд░реНрдд рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг: рдорд╛рдирдХ ArrayListред
- рд▓рдЧрд╛рддрд╛рд░ - рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдордиреЗ рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реА рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрдВ рддреИрдпрд╛рд░ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрдкрдиреЗ рд╕рднреА рдкрд┐рдЫрд▓реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреА рд╣реИрдВред рдЗрди рд╢рд░реНрддреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рд╡рд╛рд╡рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдЖрдЬ рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп
рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдЕрдЧрд▓рд╛, рдореИрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдХрдИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рднреА, рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рд▓рд┐рдП рдЧрдП рдереЗред
рд╡рд╛рд╡рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдореБрдЦреНрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЧрд╛рдбрд╝реА
рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЯреНрдпреВрдкрд▓ рд╣реИрдВред рдЯрдкрд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХрд╛ рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реЗрдЯ рд╣реИред рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдЯрдкрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Tuple tuple = Tuple.of(1, "blablabla", .0, 42L);
рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдЗрдЯрдо рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЖрддрд╛ рд╣реИред
((Tuple4) tuple)._1
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: 1 рдкрд░ tuple рдЕрдиреБрдХреНрд░рдордг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреА рд╡рд╕реНрддреБ рдХреЛ рдЙрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ 4 рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рдЯрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд░реВрдкрд╛рдВрддрд░рдг рдЯрд╛рдЗрдк
рдЯреВрд▓реЗ 4 рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдИ рднреА рд╣рдореЗрдВ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред
Tuple4 tuple = Tuple.of(1, "blablabla", .0, 42L);
рд╢реАрд░реНрд╖ 3 vavr рд╕рдВрдЧреНрд░рд╣
рд╕реВрдЪреА
Vavr рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдмрд┐рдирд╛
рд╡рд╡рд░ рдХреЗ рднреА рдЖрд╕рд╛рдиред
List.of(1, 2, 3)
рд╣рдо рдРрд╕реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдорд╛рдирдХ
рдЬрд╛рд╡рд╛ рд╕реВрдЪреА рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
final boolean containThree = List.of(1, 2, 3) .asJava() .stream() .anyMatch(x -> x == 3);
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
final boolean containThree = List.of(1, 2, 3) .find(x -> x == 1) .isDefined();
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдорд╛рдирдХ
vavr рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рд╕реВрдЪреА рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд▓реНрдХрд┐ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдирд┐рдпрдо рдФрд░ рдПрдХ рддрдЯрд╕реНрде рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЙрдирдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рд╕реВрдЪреА рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЕрд░реЗ рд╕рд┐рд░реНрдл рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕реВрдЪреАрдЪрд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг List list = List.of(1, 2, 3);
рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреА рджреЛ рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ: рдореБрдЦреНрдп рддрддреНрд╡ (рд╣реЗрдб) рдФрд░ рдЕрдиреНрдп рд╕рднреА (рдЯреЗрд▓) рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдЕрдм, рдпрджрд┐ рд╣рдо рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (1 рд╕реЗ 0 рддрдХ), рддреЛ рд╣рдореЗрдВ рддреИрдпрд╛рд░ рднрд╛рдЧреЛрдВ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг final List tailList = list.tail();
рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ! рдЪреВрдВрдХрд┐ рд╡рд░реНрдХрд╢реАрдЯ рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдПрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕рдВрдЧреНрд░рд╣ рдорд┐рд▓рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ!
рдмрд╛рд░реА
рдПрдХ рдФрд░ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрддрд╛рд░ рд╣реИред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ: рджреЛ рд╕реВрдЪрд┐рдпрд╛рдВ рдФрд░ рдПрдХ рдЯреНрдпреВрдкрд▓ред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг Queue<Integer> queue = Queue.of(1, 2, 3) .enqueue(4) .enqueue(5);
рдЬрдм рдкрд╣рд▓рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рджреВрд╕рд░реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрддрд╛рд░ рдХреЛ рдЕрдиреНрдп рд╕рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рддрд░рд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдПрдХ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЪрд╛рд▓ рд╣реИред рдХрддрд╛рд░ рдХреЗ рд╕реНрд╡реАрдХреГрдд рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рджреЛ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИред рдкрд╣рд▓рд╛: рд╡рд╛рдВрдЫрд┐рдд рдХрддрд╛рд░ рддрддреНрд╡, рджреВрд╕рд░рд╛: рдЗрд╕ рддрддреНрд╡ рдХреЗ рдмрд┐рдирд╛ рдХрддрд╛рд░ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖред
System.out.println(queue);
рдзрд╛рд░рд╛
рдЕрдЧрд▓реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдзрд╛рд░рд╛ рд╣реИред рдПрдХ рдзрд╛рд░рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд, рдЕрдХреНрд╕рд░ рд╕рд╛рд░, рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╣реИред
рдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐
рдЬрд╛рд╡рд╛ 8 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реНрдг рдзрд╛рд░рд╛рдПрдБ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирдП рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реИ?
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐
рдЬрд╛рд╡рд╛ рд╕реНрдЯреНрд░реАрдо рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдРрд╕реА рдЫреЛрдЯреА рд╕реА рдзрд╛рд░рд╛ рдмрдирд╛рдПрдВ:
IntStream standardStream = IntStream.range(1, 10);
рд╣рдо рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ:
standardStream.forEach(System.out::print);
рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:
123456789 ред рдЪрд▓реЛ рдмреНрд░реВрдЯ рдмрд▓ рдСрдкрд░реЗрд╢рди рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ:
standardStream.forEach(System.out::print);
рдУрд╣, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рд╣реБрдИ:
java.lang.IllegalStateException: stream has already been operated upon or closed
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдирдХ рдзрд╛рд░рд╛рдПрдВ рдПрдХ рдЗрдЯреНрд░реЗрдЯрд░ рдкрд░ рдмрд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдореВрд░реНрдд рд╣реИред рдпрджреНрдпрдкрд┐ рдпрд╣ рдзрд╛рд░рд╛рдПрдБ рдмрд╛рд╣рд░ рдХреА рдУрд░ рдмрд╣реБрдд рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓рдЧрддреА рд╣реИрдВ, рдлрд┐рд░ рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдзрд╛рд░рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдирдХ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, vavr рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:
Stream stream = Stream.range(1, 10); stream.forEach(System.out::print); stream.forEach(System.out::print);
рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ
123456789123456789 рдорд┐рд▓рддрд╛ рд╣реИред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдСрдкрд░реЗрд╢рди рдиреЗ рд╣рдорд╛рд░реА рдзрд╛рд░рд╛ рдХреЛ "рдЦрд░рд╛рдм" рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдЖрдЗрдП рдПрдХ рдЕрдВрддрд╣реАрди рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
рд╕реНрдЯреНрд░реАрдо infiniteStream = Stream.from (1);
System.out.println (infiniteStream); // рд╕реНрдЯреНрд░реАрдо (1 ,?)
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдПрдХ рдЕрдирдВрдд рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рддрддреНрд╡ рдФрд░ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рд╣реЛрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдзрд╛рд░рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХрд╛ рддрддреНрд╡ рдордХреНрдЦреА рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдирдВрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ: рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рд▓реЗрдХрд┐рди рд╡реЗ рдмреЗрд╣рдж рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рд╕реНрдЯреНрд░реАрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдерд╛рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
Stream oddNumbers = Stream .from(1, 2)
рдЗрддрдирд╛ рд╕рд░рд▓ред
рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд░рдЪрдирд╛
рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣
рд╡рд╛рд╡рд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ:

рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
StringBuilder builder = new StringBuilder(); for (String word : List.of("one", "two", "tree")) { if (builder.length() > 0) { builder.append(", "); } builder.append(word); } System.out.println(builder.toString());
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЙрдХ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдкрдХреЛ рдкрд░рд┐рдЪрд┐рдд рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
System.out.println(List.of("one", "two", "tree").mkString(", "));
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп рд╣реИрдВ (8 рдЯреБрдХрдбрд╝реЗ) рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗред рд╡реЗ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВред рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (0 рд╕реЗ 8 рддрдХ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдлрд╝рдВрдХреНрд╢рди 0 рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ,
рдлрд╝рдВрдХреНрд╢рди 1 рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ,
рдлрд╝рдВрдХреНрд╢рди 2 рджреЛ рд▓реЗрддрд╛ рд╣реИ, рдЖрджрд┐ред
Function2<String, String, String> combineName = (lastName, firstName) -> firstName + " " + lastName; System.out.println(combineName.apply("Griffin", "Peter"));
рд╡рд╛рд╡рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рд╛рдВрдд рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдорд╛рдирдХ рдлрд╝рдВрдХреНрд╢рди, BiFunction, рдЖрджрд┐ рд╕реЗ рдмрд╣реБрдд рдЖрдЧреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд░реАред рднрд╛рдЧреЛрдВ рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд╣реИред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рдлреА рд░рд╕реАрд▓рд╛ред
рдХрд░реА рд╡рд┐рдзрд┐ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдХрд░реА рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди @Override default Function1<T1, Function1<T2, R>> curried() { return t1 -> t2 -> apply(t1, t2); }
рдлрдВрдХреНрд╢рди рд╕реЗрдЯ рдореЗрдВ рдХрдИ рдФрд░ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рдкрд░рд┐рдгрд╛рдо рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Function0<Double> hashCache = Function0.of(Math::random).memoized(); double randomValue1 = hashCache.apply(); double randomValue2 = hashCache.apply(); System.out.println(randomValue1 == randomValue2);
рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рдбрд╝реЛ
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдкрд╡рд╛рдж рдЙрдирдХреЗ рд╕реНрдкрд╖реНрдЯ рдЬрдирд░реЗрдЯрд░ рд╣реИрдВред
рдЖрдк рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП
рдЯреНрд░рд╛рдИ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ
рд╕рдиреНрдпрд╛рд╕реА рд╣реИ ред рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдмрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
Try.of(() -> 4 / 0) .onFailure(System.out::println) .onSuccess(System.out::println);
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╣рдо рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐ рдкрд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдЧрдгрдирд╛ рдХреА рд╕реАрдорд╛ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди
рдЕрдХреНрд╕рд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмрд╕ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдПрдХ рдЕрджреНрднреБрдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдЦреЛрдЬ рдЗрдВрдЬрди рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЕрдм
рдФрд░ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдмрд╕ рд╕рднреА рддрд░реНрдХ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
import static io.vavr.API.*; import static io.vavr.Predicates.*; public class PatternMatchingDemo { public static void main(String[] args) { String s = Match(1993).of( Case($(42), () -> "one"), Case($(anyOf(isIn(1990, 1991, 1992), is(1993))), "two"), Case($(), "?") ); System.out.println(s);
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рдорд▓рд╛ рдХреИрдкрд┐рдЯрд▓ рдореЗрдВ рд╣реИ рдорд╛рдорд▓рд╛ рдПрдХ рдХреАрд╡рд░реНрдб рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рд╡рд╣
рдШрдЯрдирд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд░ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдереНрд░реЗрдб рдкреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдорд╛рдирдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдФрд░ рд╡рд┐рдЪрд╛рд░рд╣реАрди рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд┐рд░рджрд░реНрдж рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдХреНрд╕рд░ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣рдо рд╕реНрдкреНрд░рд┐рдВрдЧ рдФрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред