рдЬрд╛рд╡рд╛ рдкреНрд░реИрдХреНрдЯрд┐рдХрд▓ рдЯрд╛рд╕реНрдХ - рдкрд╛рдареНрдпрдХреНрд░рдо рдФрд░ рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП

рдЬрд╛рд╡рд╛ рдкреНрд░реИрдХреНрдЯрд┐рдХрд▓ рдЯрд╛рд╕реНрдХ - рдкрд╛рдареНрдпрдХреНрд░рдо рдФрд░ рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП


рдХреБрдЫ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╢рдмреНрдж


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

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реА рдкреНрд░рддреНрдпреЗрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реВрдВ - рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдирдП рд╡рд┐рд╖рдп (рдХрдХреНрд╖рд╛рдПрдВ, рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░, рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди, рдФрд░ рдЗрд╕реА рддрд░рд╣) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрддрд╛рддрд╛ рд╣реВрдВред рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ, рдпрд╛рдиреА рдХрд┐рд╕реА рддрд░рд╣ рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдирд╛ред рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдШрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЖрдк рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рдХрд╛ рддреНрд╡рд░рд┐рдд рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реБрдзрд╛рд░ рдкрд░ рдЯрд┐рдкреНрдкрдгреА, рд▓рд┐рдЦрд┐рдд рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╣реБрдд рдкрд╣рд▓реЗ рдкрд╛рдареЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ред рд▓реВрдкреНрд╕, рд╕рд╢рд░реНрдд рдмрдпрд╛рдиреЛрдВ рдФрд░ рдУрдУрдкреА рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЧ "рдбреЙрдЧ" рдпрд╛ рдХреНрд▓рд╛рд╕ "рд╡реЗрдХреНрдЯрд░" рд▓рд┐рдЦреЗрдВ)ред рд▓реЗрдЯрдХреЛрдб рдЬреИрд╕реА рд╕реЗрд╡рд╛рдПрдВ рднреА рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рдСрдирд▓рд╛рдЗрди рд╣рд▓ рдХрд░рдиреЗ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдПрдХ рдкрд╛рда рдореЗрдВ рдХреНрдпрд╛ рдХрд╛рд░реНрдп рджрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдереЗ? рдзрд╛рд░рд╛рдУрдВ? рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдРрд╕реЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдпрд╣ рд▓реЗрдЦ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ (рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ)ред

рдмреЗрд╢рдХ, рд╕рднреА рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣реАрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд▓реЗрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╢рд┐рдХреНрд╖рдХреЛрдВ (рдЬрд╛рд╡рд╛ рдХреЗ рд╕рдорд╛рди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛) рдпрд╛ рдирд┐рдЬреА рддреМрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ "рдЖрдЙрдЯ рдСрдл рдж рдмреЙрдХреНрд╕" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рд╕реАрдЦрдиреЗ рд╡рд╛рд▓реЗ рднреА рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдРрд╕реЗ рдлреИрд╕рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рджрд╢рдХреЛрдВ рд╕реЗ рд╣рд░ рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рд╕рд░рд▓ рдХрд╛рд░реНрдп, рдореИрдВ рднреА рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж, рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рд╢реБрд░реВ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдХрд╛рд░реНрдп рд╕реВрдЪреА


рдореВрд▓ рдмрд╛рддреЗрдВ


1.0ред рдЕрдзрд┐рдХрддрдо, рдиреНрдпреВрдирддрдо рдФрд░ рдФрд╕рдд
рез.рез рдЕрд░реНрд░реЗ рдЫрд╛рдБрдЯреЗ
1.2 рдкреНрд░рд╛рдЗрдорд┐рдВрдЧ рдвреВрдБрдврдирд╛
1.3 рдПрдХ рд╕рд░рдгреА рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛

OOP рдореВрд▓ рдмрд╛рддреЗрдВ


2.0 рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдФрд░ рдмрдирд╛рдирд╛
2.1 рдПрдХ рднрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрддреНрд╡ рдХреА рдЙрддреНрдкрддреНрддрд┐
реи.реи рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА

рдкреНрд░рддреНрдпрд╛рд╡рд░реНрддрди


3.0 рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ
3.1 рд╕рдореАрдХрд░рдг рдХреА рдЬрдбрд╝ рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдП
3.2 рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА

рд╡рд┐рд░рд╛рд╕рдд


4.0 рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рд▓рд╛рдЧреВ рдХрд░реЗрдВ
рек.рез рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдЖрдпрд╛рдореА рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - реи
4.2 рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ - 3
4.3 рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - 4

рдкрдВрдХреНрддрд┐рдпрд╛рдВ


5.0 рдкрддреНрд░реЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╢рдмреНрджрдХреЛрд╢

рд╕рд╛рд░ рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕


6.0ред рддрд╛рдкрдорд╛рди рдХрдирд╡рд░реНрдЯрд░
6.1ред рдкреВрд░реНрд╡рд╡рдд рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧрд░
6.2ред рд░рд╛рдЬреНрдп рдирд┐рд░реНрдорд╛рдг рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ (рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди)
6.4ред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рднрд░рдирд╛

рд╕рдВрдЧреНрд░рд╣


7.0ред рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА рдбрд┐рдХреНрд╢рдирд░реА рдСрдл рд╡рд░реНрдбреНрд╕
7.1ред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдЧреНрд░рд╣
7.2ред ArrayList рдФрд░ LinkedList
7.3ред рдПрдХ рд╕рд░рдгреА рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд▓рд┐рдЦреЗрдВ
7.4ред рджреНрд╡рд┐-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд▓рд┐рдЦреЗрдВ
7.5ред рдПрдХ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
7.6ред рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ Iterator
7.7ред рдЧрд┐рдирддреА рдХреЗ рддрддреНрд╡
7.8ред рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ рдФрд░ рдореВрд▓реНрдп рдмрджрд▓реЗрдВ

рдмрд╣реБ рд╕реВрддреНрд░рдг


8.0ред рд░рд╛рдЬреНрдпреЛрдВ
8.1ред рдзрд╛рдЧрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
8.2ред рдЙрдкрднреЛрдХреНрддрд╛ рдирд┐рд░реНрдорд╛рддрд╛

рдПрдиреЛрдЯреЗрд╢рди


9.0ред рдХрд╕реНрдЯрдо рдПрдиреЛрдЯреЗрд╢рди - рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдкрдпреЛрдЧ

рдЕрдВрддрд┐рдо рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдп


10.0ред рд╕рдбрд╝рдХ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
10.1ред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдЦреЛрдЬред рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ
10.2ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп - HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛
10.3ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп - рдореМрд╕рдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо-рдмреЙрдЯ
10.4ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп - рд▓рд┐рдЦрд╛рд╡рдЯ рдХреА рдорд╛рдиреНрдпрддрд╛

рдореВрд▓ рдмрд╛рддреЗрдВ


1.0ред рдЕрдзрд┐рдХрддрдо, рдиреНрдпреВрдирддрдо рдФрд░ рдФрд╕рдд


рдЙрджреНрджреЗрд╢реНрдп:

рд╕рд░рдгреА рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рднрд░реЗрдВ рдФрд░ рдЕрдзрд┐рдХрддрдо, рдиреНрдпреВрдирддрдо рдФрд░ рдФрд╕рдд рдореВрд▓реНрдп рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред

рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Math.random () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ [0, 1]ред

рд╕рдорд╛рдзрд╛рди:

public static void main(String[] args) { int n = 100; double[] array = new double[n]; for (int i = 0; i < array.length; i++) { array[i] = Math.random(); } double max = array[0]; //      double min = array[0]; double avg = 0; for (int i = 0; i < array.length; i++) { if(max < array[i]) max = array[i]; if(min > array[i]) min = array[i]; avg += array[i]/array.length; } System.out.println("max = " + max); System.out.println("min = " + min); System.out.println("avg = " + avg); } 

1.1ред рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдмрд▓ рд╕реЙрд░реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ


рд╕рдорд╛рдзрд╛рди:

  for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { double temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } 

1.2ред рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкреНрд░рд╛рдЗрдо рдирдВрдмрд░ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ [2, 100] рдХреЗ рдмреАрдЪ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП % рдСрдкрд░реЗрдЯрд░ (рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╢реЗрд╖) рдФрд░ рдЫреЛрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди:

  for(int i = 2; i <= 100; i ++){ boolean isPrime = true; for(int j = 2; j < i; j++){ if(i % j == 0){ isPrime = false; break; } } if(isPrime){ System.out.println(i); } } 

рдпрд╛ рд▓реЗрдмрд▓ рдЫреЛрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

  out_for: for (int i = 2; i <= 100; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) { continue out_for; } } System.out.println(i); } 

1.3ред рд╕рд░рдгреА рд╕реЗ рд╣рдЯрд╛рдПрдВ


рдЙрджреНрджреЗрд╢реНрдп:

рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдПрдХ рд╕рд░рдгреА рдФрд░ рдПрдХ рдЕрдиреНрдп рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рднреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рд░рдгреА рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВ (рдХреЛрдИ рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╕рдорд╛рдзрд╛рди:

  public static void main(String[] args) { int test_array[] = {0,1,2,2,3,0,4,2}; /* Arrays.toString: . https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html */ System.out.println(Arrays.toString(removeElement(test_array, 3))); } public static int[] removeElement(int[] nums, int val) { int offset = 0; for(int i = 0; i< nums.length; i++){ if(nums[i] == val){ offset++; } else{ nums[i - offset] = nums[i]; } } // Arrays.copyOf     nums    //   nums.length - offset return Arrays.copyOf(nums, nums.length - offset); } 

рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рд░рдгреА рдХреА рдкреВрдВрдЫ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдорд╛рдирдХ рд╡рд┐рдзрд┐ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА:

 public static int[] removeElement(int[] nums, int val) { int offset = 0; for(int i = 0; i< nums.length; i++){ if(nums[i] == val){ offset++; } else{ nums[i - offset] = nums[i]; } } int[] newArray = new int[nums.length - offset]; for(int i = 0; i < newArray.length; i++){ newArray[i] = nums[i]; } return newArray; } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╡рд╛рдВрдЫрд┐рдд рд▓рдВрдмрд╛рдИ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public static int[] removeElement(int[] nums, int val) { int count = 0; //      for (int i = 0; i < nums.length; i++) { if (nums[i] != val) { count++; } } int[] newArray = new int[count]; int offset = 0; //      , //       for(int i = 0; i< nums.length; i++){ if(nums[i] == val){ offset++; } else{ newArray[i - offset] = nums[i]; } } return newArray; } 


2.0ред рдПрдХ рд╕рджрд┐рд╢ рд╡рд░реНрдЧ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдФрд░ рдмрдирд╛рдирд╛


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ (рддреАрди рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдореЗрдВ)ред

рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ x, y, z рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рддрд╛
  • рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ред рд░реВрдЯ рдХреА рдЧрдгрдирд╛ Math.sqrt () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

     s q r t x 2 + y 2 + z 2

  • рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдЧрдгрдирд╛ рд╡рд┐рдзрд┐:

    x 1 x 2 + y 1 y 2 + z 1 z 2

  • рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рдХреА рджреВрд╕рд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐:

    (y_1z_2 - z_1y_2, z_1x_2 - x_1z_2, x_1y_2 - y_1_2_2 -

    (y_1z_2 - z_1y_2, z_1x_2 - x_1z_2, x_1y_2 - y_1_2_2 -
  • рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рд╡реИрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг (рдпрд╛ рдХреЛрдг рдХреЗ рдХреЛрд╕рд╛рдЗрди) рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ: рд╡реИрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг рдХрд╛ рдХреЛрд╕рд╛рдЗрди рд╡реИрдХреНрдЯрд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ (рд▓рдВрдмрд╛рдИ) рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ:

     frac(рдП,рдмреА)|рдП| cdot|b|

  • рдпреЛрдЧ рдФрд░ рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ:

    (x1+x2,y1+y2,z1+z2)

    (x1тИТx2,y1тИТy2,z1тИТz2)


  • рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдЬреЛ рдкреВрд░реНрдгрд╛рдВрдХ N рдХреЛ рд▓реЗрддреА рд╣реИ рдФрд░ рдЖрдХрд╛рд░ N рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реИрдХреНрдЯрд░ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддреА рд╣реИред

рдпрджрд┐ рд╡рд┐рдзрд┐ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд▓реМрдЯрд╛рддреА рд╣реИ, рддреЛ рдЙрд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдзрд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ " рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ " рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╕рдорд╛рдзрд╛рди:

 public class Vector { //    private double x; private double y; private double z; //    public Vector(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } //  .     public double length() { return Math.sqrt(x * x + y * y + z * z); } // ,    public double scalarProduct(Vector vector) { return x * vector.x + y * vector.y + z * vector.z; } // ,    public Vector crossProduct(Vector vector) { return new Vector( y * vector.z - z * vector.y, z * vector.x - x * vector.z, x * vector.y - y * vector.x); } //     public double cos(Vector vector) { //       // multiply  length return scalarProduct(vector) / (length() * vector.length()); } public Vector add(Vector vector) { return new Vector( x + vector.x, y + vector.y, z + vector.z ); } public Vector subtract(Vector vector) { return new Vector( x - vector.x, y - vector.y, z - vector.z ); } public static Vector[] generate(int n){ Vector[] vectors = new Vector[n]; for(int i =0; i < n; i++){ vectors[i] = new Vector(Math.random(), Math.random(), Math.random()); } return vectors; } @Override public String toString() { return "Vector{" + "x=" + x + ", y=" + y + ", z=" + z + '}'; } } 

рдЖрдк рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public static void main(String[] args) { Vector[] vectors = Vector.generate(10); System.out.println(vectors[0]); System.out.println(vectors[1]); System.out.println(vectors[0].length()); System.out.println(vectors[0].scalarProduct(vectors[1])); System.out.println(vectors[0].crossProduct(vectors[1])); System.out.println(vectors[0].cos(vectors[1])); System.out.println(vectors[0].add(vectors[1])); System.out.println(vectors[0].subtract(vectors[1])); } 

рдЖрдк рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░ рд╡рд░реНрдЧ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 public class Vector { //    ,    private double values[]; public Vector(double[] values) { this.values = values; } //  .     public double length() { double sum = 0; for (int i = 0; i < values.length; i++) { sum += values[i] * values[i]; } return Math.sqrt(sum); } // ,    public double scalarProduct(Vector vector) { double res = 0; for (int i = 0; i < values.length; i++) { res += values[i] * vector.values[i]; } return res; } //     // public double crossProduct(Vector vector) { // // } //     public double cos(Vector vector) { return scalarProduct(vector) / (length() * vector.length()); } public Vector add(Vector vector) { double[] another = new double[values.length]; for (int i = 0; i < values.length; i++) { another[i] = values[i] + vector.values[i]; } return new Vector(another); } public Vector subtract(Vector vector) { double[] another = new double[values.length]; for (int i = 0; i < values.length; i++) { another[i] = values[i] - vector.values[i]; } return new Vector(another); } //   private static double[] generateRandomArray(int length) { double[] array = new double[length]; for (int i = 0; i < array.length; i++) { array[i] = Math.random(); } return array; } public static Vector[] generate(int n, int dimension) { Vector[] vectors = new Vector[n]; for (int i = 0; i < n; i++) { vectors[i] = new Vector(generateRandomArray(dimension)); } return vectors; } } 


2.1ред рд╡рдЬрди рдХреЗ рд╕рд╛рде рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдЗрдЯрдо рдмрдирд╛рдирд╛


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рд╡рд░реНрдЧ рд▓рд┐рдЦреЗрдВ рдЬрд┐рд╕рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рджреЛ рд╕рд░рдгрд┐рдпрд╛рдБ рд▓реЗрддрд╛ рд╣реИ: рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рднрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреАред
рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рднрд╛рд░ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд▓реМрдЯрд╛рдПрдЧреА, рдЗрд╕рдХреЗ рд╡рдЬрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рдПрдХ рд╕рд░рдгреА рджреА рдЧрдИ рд╣реИ [1, 2, 3] рдФрд░ рднрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА [1, 2, 10]ред
рдФрд╕рддрди, рдореВрд▓реНрдп "1" рдХреЛ рдореВрд▓реНрдп "2" рд╕реЗ 2 рдЧреБрдирд╛ рдХрдо рдФрд░ рдорд╛рди "3" рд╕реЗ рджрд╕ рдЧреБрдирд╛ рдХрдо рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдорд╛рдзрд╛рди:

 /*     :  ,   тАФ    .   ""     ,       ,        : |-|--|----------| 0-1--3----------13 ^ */ class RandomFromArray { private int[] values; //  private int[] weights; //  private int[] ranges; //    private int sum; //     public RandomFromArray(int[] values, int[] weights) { this.values = values; this.weights = weights; ranges = new int[values.length]; //     sum = 0; for (int weight : weights) { sum += weight; } //  ranges,   int lastSum = 0; for (int i = 0; i < ranges.length; i++) { ranges[i] = lastSum; lastSum += weights[i]; } } /*  ranges  ,        [0;sum],   ,   : */ public int getRandom() { int random = (int) (Math.random() * (sum - 1)); int ourRangeIndex = 0; for (int i = 0; i < ranges.length; i++) { if (ranges[i] > random) { break; } ourRangeIndex = i; } return values[ourRangeIndex]; } } 

рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рд╢реНрд░реЗрдгреА рд╕рд░рдгреА рдХреНрд░рдордмрджреНрдз рд╣реИ, рдЖрдк рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ (рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):

 public int getRandom() { int random = (int) (Math.random() * (sum - 1)); int index = Arrays.binarySearch(ranges, random); return values[index >= 0 ? index : -index - 2]; } 

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред рдЖрдк рдПрдХ рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ рд╕рднреА рднрд╛рд░ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдлрд┐рд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЪреБрдирд╛рд╡ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдорд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА [1, 2, 3], рдФрд░ рднрд╛рд░ рдХрд╛ рдПрдХ рд╕рд░рдгреА [1, 2, 10] рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рддреБрд░рдВрдд [1, 2, 2, 3, 3, 3, 3, 3, 3] рдХрд╛ рдПрдХ рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред 3, 3, 3, 3] рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрддреНрд╡ рдирд┐рдХрд╛рд▓реЗрдВ:

 class RandomFromArray { private int[] extended_values; //  public RandomFromArray(int[] values, int[] weights) { //     int sum = 0; for (int weight : weights) { sum += weight; } extended_values = new int[sum]; int cursor = 0; for(int i = 0; i < weights.length; i++){ for(int j = 0; j < weights[i]; j++){ extended_values[cursor++] = values[i]; } } } /*  extended_values  ,        [0; extended_values.length) */ public int getRandom() { int random = (int) (Math.random() * ( extended_values.length - 1)); return extended_values[random]; } } 

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ - рдкрд┐рдЫрд▓реЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд▓реЙрдЧ (n) рдХреЗ рд╡рд┐рдкрд░реАрдд рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрддреНрд╡ O (1) рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рд╕рдордпред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

O( рдпреЛрдЧn)



2.2ред рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА


рдПрдХ рдФрд░ рдХрд╛рд░реНрдп рдЬреЛ рдореИрдВ рдЕрдХреНрд╕рд░ рджреЗрддрд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рд╕рд░рд▓рддрдо рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓рд╛рдЧреВ рдЬреЛрдбрд╝реЗрдВ () рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдХреЗрд╡рд▓ )), рдпрд╛ рдЖрдк java.util.List рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЬрд╛рд╡рд╛ рдореЗрдВ рд╣реИрдмрд░ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХреНрдб рд╕реВрдЪреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ:
рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВред LinkedList

3.0ред рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрд┐рдП рдЬреЛ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рддрддреНрд╡ рдРрд░реЗ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдФрд░ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдХреНрд░рдо рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ (рдЬреИрд╕реЗ рдХрд┐ 100000000 рддрддреНрд╡)ред
рд╕рдорд╛рдзрд╛рди:

  /*  ,   .    ,  -1 */ public static int bruteForce(double[] array, double key) { for (int i = 0; i < array.length; i++) { if (array[i] == key) return i; } return -1; } /*   */ public static int binarySearchRecursively(double[] sortedArray, double key) { return binarySearchRecursively(sortedArray, key, 0, sortedArray.length); } /** *    {@link #binarySearchRecursively(double[], double)} * *    ,   ,   " ", *      .    low  high * * @param sortedArray   * @param key   * @param low     * @param high     * @return   */ private static int binarySearchRecursively (double[] sortedArray, double key, int low, int high) { int middle = (low + high) / 2; //  if (high < low) { //    return -1; } if (key == sortedArray[middle]) { //   return middle; } else if (key < sortedArray[middle]) { //     return binarySearchRecursively( sortedArray, key, low, middle - 1); } else { return binarySearchRecursively( //     sortedArray, key, middle + 1, high); } } //     private static double[] generateRandomArray(int length) { double[] array = new double[length]; for (int i = 0; i < array.length; i++) { array[i] = Math.random(); } return array; } public static void main(String[] args) { double[] array = generateRandomArray(100000000); Arrays.sort(array); //    /*  ,       ,   benchmarks . https://habr.com/ru/post/349914/     */ long time = System.currentTimeMillis(); //  , unix-time bruteForce(array, 0.5); System.out.println(System.currentTimeMillis() - time); time = System.currentTimeMillis(); binarySearchRecursively(array, 0.5); System.out.println(System.currentTimeMillis() - time); } 

3.1ред рд╕рдореАрдХрд░рдг рдХреА рдЬрдбрд╝ рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдП


рдЙрджреНрджреЗрд╢реНрдп:

рд╕рдореАрдХрд░рдг рдХреА рдЬрдбрд╝ рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдП

cos(x5)+x4тИТ345.3тИЧxтИТ23=0

рдЦрдВрдб рдкрд░ [0; 10] x рдореЗрдВ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде 0.001 рд╕реЗ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЬрдбрд╝ рдЗрд╕ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ (рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди:

  //   public static double func(double x){ return Math.cos(Math.pow(x, 5)) + Math.pow(x, 4) - 345.3 * x - 23; } //   public static double solve(double start, double end){ if(end - start <= 0.001){ return start; } double x = start + (end - start) / 2; if(func(start) * func(x) > 0){ return solve(x, end); } else { return solve(start, x); } } public static void main(String[] args) { System.out.println(solve(0, 10)); } 

рдиреЛрдЯ: рдпрджрд┐ рд╣рдо x рдореЗрдВ , y рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

  if(Math.abs(func(start)- func(end)) <= 0.001){ return start; } 

рдПрдХ рдЫреЛрдЯреА рд╕реА рдЪрд╛рд▓: рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рджреЛрд╣рд░реЗ рдорд╛рдиреЛрдВ рдХрд╛ рд╕реЗрдЯ рдкрд░рд┐рдорд┐рдд рд╣реИ (рджреЛ рдЖрд╕рдиреНрди рдореВрд▓реНрдп рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмреАрдЪ рдХреЛрдИ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИрдВ), рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

  double x = start + (end - start) / 2; if(x == end || x == start){ return x; } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЕрдзрд┐рдХрддрдо рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

3.2ред рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА


рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдкреЗрдбрд╝ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рджреЗрддрд╛ рд╣реВрдВ рдЬрдм рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ
рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдмрд╣реБрдд рдЕрд▓рдЧ рддрд░рд╣ рдХреЗ рдХрдИ рд▓реЗрдЦ / рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ:
рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ: рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреЗрдбрд╝ред
рдмрд╛рдЗрдирд░реА рдЯреНрд░реА, рддреНрд╡рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЬрд╛рд╡рд╛ рдПрдХ рд╣реИрд╢реЗрдб рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рд╡рд┐рд░рд╛рд╕рдд


4.0ред рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:


рдмреЙрдХреНрд╕ рдХреНрд▓рд╛рд╕ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рдЖрдХреГрддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдРрдб () рд╡рд┐рдзрд┐ рдЖрдХрд╛рд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИред рдЬрдм рддрдХ рд╣рдо рдмреЙрдХреНрд╕ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдирд╣реАрдВ рд▓реЗрдВрдЧреЗ рддрдм рддрдХ рд╣рдореЗрдВ рдирдП рдЖрдХрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рд╣реЛрдВрдЧреЗ (рд╣рдо рдХреЗрд╡рд▓ рдорд╛рддреНрд░рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЖрдХрд╛рд░ рдХреА рдЕрдирджреЗрдЦреА рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рддрд░рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдПрдХ рдирдпрд╛ рдЖрдХрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдЭреВрдареА рд╡рд╛рдкрд╕ рдЖрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рдорд╛рдзрд╛рди:

 class Shape { private double volume; public Shape(double volume) { this.volume = volume; } public double getVolume() { return volume; } } class SolidOfRevolution extends Shape { private double radius; public SolidOfRevolution(double volume, double radius) { super(volume); this.radius = radius; } public double getRadius() { return radius; } } class Ball extends SolidOfRevolution { //   public Ball(double radius) { super(Math.PI * Math.pow(radius, 3) * 4 / 3, radius); } } class Cylinder extends SolidOfRevolution { //   private double height; public Cylinder(double radius, double height) { super(Math.PI * radius * radius * height, radius); this.height = height; } } class Pyramid extends Shape{ private double height; private double s; //   public Pyramid(double height, double s) { super(height * s * 4 / 3); this.height = height; this.s = s; } } class Box extends Shape { private ArrayList<Shape> shapes = new ArrayList<>(); private double available; public Box(double available) { super(available); this.available = available; } public boolean add(Shape shape) { if (available >= shape.getVolume()) { shapes.add(shape); available -= shape.getVolume(); return true; } else { return false; } } } public class Main { public static void main(String[] args) { Ball ball = new Ball(4.5); Cylinder cylyinder = new Cylinder(2, 2); Pyramid pyramid = new Pyramid(100, 100); Box box = new Box(1000); System.out.println(box.add(ball)); // ok System.out.println(box.add(cylyinder)); // ok System.out.println(box.add(pyramid)); // failed } } 

рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рдХрдИ рдФрд░ рд░реВрдк рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред

4.1ред рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - 2


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рд╣реА рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХрдХреНрд╖рд╛рдПрдВ рдЕрдореВрд░реНрдд рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди:

 abstract class Shape { public abstract double getVolume(); } abstract class SolidOfRevolution extends Shape { protected double radius; public SolidOfRevolution(double radius) { this.radius = radius; } public double getRadius() { return radius; } } class Ball extends SolidOfRevolution { //   @Override public double getVolume() { return Math.PI * Math.pow(radius, 3) * 4 / 3; } public Ball(double radius) { super(radius); } } class Cylinder extends SolidOfRevolution { //   private double height; public Cylinder(double radius, double height) { super(radius); this.height = height; } @Override public double getVolume() { return Math.PI * radius * radius * height; } } class Pyramid extends Shape { private double height; private double s; //   public Pyramid(double height, double s) { this.height = height; this.s = s; } @Override public double getVolume() { return height * s * 4 / 3; } } class Box extends Shape { private ArrayList<Shape> shapes = new ArrayList<>(); private double available; private double volume; public Box(double available) { this.available = available; this.volume = available; } public boolean add(Shape shape) { if (available >= shape.getVolume()) { shapes.add(shape); available -= shape.getVolume(); return true; } else { return false; } } @Override public double getVolume() { return volume; } } public class Main { public static void main(String[] args) { Ball ball = new Ball(4.5); Cylinder cylyinder = new Cylinder(2, 2); Pyramid pyramid = new Pyramid(100, 100); Box box = new Box(1000); System.out.println(box.add(ball)); // ok System.out.println(box.add(cylyinder)); // ok System.out.println(box.add(pyramid)); // failed } } 

4.2ред рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - 3


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рд╣реА рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рддреБрд▓рдирд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди:

 interface Shape extends Comparable<Shape>{ double getVolume(); @Override default int compareTo(Shape other) { return Double.compare(getVolume(), other.getVolume()); } } abstract class SolidOfRevolution implements Shape { protected double radius; public SolidOfRevolution(double radius) { this.radius = radius; } public double getRadius() { return radius; } } class Ball extends SolidOfRevolution { //   @Override public double getVolume() { return Math.PI * Math.pow(radius, 3) * 4 / 3; } public Ball(double radius) { super(radius); } } class Cylinder extends SolidOfRevolution { //   private double height; public Cylinder(double radius, double height) { super(radius); this.height = height; } @Override public double getVolume() { return Math.PI * radius * radius * height; } } class Pyramid implements Shape { private double height; private double s; //   public Pyramid(double height, double s) { this.height = height; this.s = s; } @Override public double getVolume() { return height * s * 4 / 3; } } class Box implements Shape { private ArrayList<Shape> shapes = new ArrayList<>(); private double available; private double volume; public Box(double available) { this.available = available; this.volume = available; } public boolean add(Shape shape) { if (available >= shape.getVolume()) { shapes.add(shape); available -= shape.getVolume(); return true; } else { return false; } } @Override public double getVolume() { return volume; } public ArrayList<Shape> getShapes() { return shapes; } } public class Main { public static void main(String[] args) { Ball ball = new Ball(4.5); Cylinder cylyinder = new Cylinder(2, 2); Pyramid pyramid = new Pyramid(100, 100); Box box = new Box(1000); System.out.println(box.add(ball)); // ok System.out.println(box.add(cylyinder)); // ok System.out.println(box.add(pyramid)); // failed // Sorting: ArrayList<Shape> shapes = box.getShapes(); Collections.sort(shapes); // sorted by Volume! } } 

4.3ред рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдЖрдпрд╛рдореА рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - 4


рдЙрджреНрджреЗрд╢реНрдп:

рдПрдХ рдордирдорд╛рдирд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЛрдЯреЗрд╢рди рдЖрдХрд╛рд░ рдЬреЛрдбрд╝реЗрдВред рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрднрд┐рдиреНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдорд╛рдирд┐рдд рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрд░реНрдгрди рдЖрдХреГрддрд┐ рдХрд╛ рдЖрдпрддрди рд╣реИ

Vx= pi intbaf2(x)dx


рдФрд░ рдЕрднрд┐рдиреНрди рд╣реИ
рдЫрд╡рд┐


рддрдм рдЖрдк рдЖрдпрдд рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 class SolidRevolutionForFunction extends SolidOfRevolution { private Function<Double, Double> function; private double a; private double b; public SolidRevolutionForFunction( Function<Double, Double> function, double a, double b) { super(b - a); this.function = function; this.a = a; this.b = b; } @Override public double getVolume() { double sum = 0; int iterations = 10000; double delta = (b - a)/iterations; for(int i = 0; i < iterations; i++){ double x = a + ((b - a) * i/iterations); sum += Math.pow(function.apply(x), 2) * delta; } return Math.PI * sum; } } 

 public static void main(String[] args) { Shape shape = new SolidRevolutionForFunction(new Function<Double, Double>() { @Override public Double apply(Double x) { return Math.cos(x); } }, 0, 10); System.out.println(shape.getVolume()); } 

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

рдкрдВрдХреНрддрд┐рдпрд╛рдВ


рдЖрдк рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдпреЗ рджреЗрддрд╛ рд╣реВрдВ:

  • рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рд╕рдмрд╕реЗ рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВред
  • рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╢рдмреНрдж рдПрдХ рдкреИрд▓рд┐рдВрдбреНрд░реЛрдо рд╣реИ ред
  • рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрд┐рдП рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдмрд▓реНрдХ "рдмрд╛рдпрдХрд╛" рд╢рдмреНрдж рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ "рдХрдЯ рдЖрдЙрдЯ" рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддреА рд╣реИ
    рд╕реЗрдВрд╕рд░ рдХрд┐рдпрд╛ рд╣реБрдЖ] "
  • рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рд▓реМрдЯрд╛рддреА рд╣реИред

рдореИрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рд░реНрдп рд╣реИрдВред

рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ:

5.0ред рд░реВрд╕реА (рдпрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА) рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╢рдмреНрджрдХреЛрд╢ред


рдЙрджреНрджреЗрд╢реНрдп:

рд░реВрд╕реА (рдпрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА) рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдПрдХ рдЖрд╡реГрддреНрддрд┐ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдПрдБред рд╣рдо рднрд╛рд╖рд╛ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдпрд╣ рдЫреЛрдЯреА рд▓рдВрдмрд╛рдИ рдХреЗ рдкрд╛рда рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛)ред

рд╕рдорд╛рдзрд╛рди:

  /** *      ,  *      , *    Map. * *    Map.Entry<Character, Integer>, *     (Character) * * @param text -  */ void buildDictionaryWithMap(String text){ text = text.toLowerCase(); Map<Character, Integer> map = new HashMap<>(); for(int i = 0; i < text.length(); i++){ char ch = text.charAt(i); //     - if((ch >= '' && ch <= '') || ch == ''){ map.compute(ch, (character, integer) -> integer == null ? 1 : integer + 1); } } ArrayList<Map.Entry<Character, Integer>> entries = new ArrayList<>(map.entrySet()); entries.sort((o1, o2) -> Character.compare(o1.getKey(), o2.getKey())); for(Map.Entry<Character, Integer> entry : entries){ System.out.println(entry.getKey() + " " + entry.getValue()); } } 

рдпрд╛ рддреЛ:

  /** *   Map. *    ,    *      *  * @param text */ void buildDictionary(String text){ text = text.toLowerCase(); int[] result = new int['' - '' + 1]; for(int i = 0; i < text.length(); i++){ char ch = text.charAt(i); if(ch >= '' && ch <= ''){ result[ch - '']++; } } for(int i = 0; i < result.length; i++){ System.out.println((char) (i + '') + " = " + result[i]); } } 

рд╕рд╛рд░ рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕


6.0ред рддрд╛рдкрдорд╛рди рдХрдирд╡рд░реНрдЯрд░


рдЙрджреНрджреЗрд╢реНрдп:

рдбрд┐рдЧреНрд░реА рд╕реЗрд▓реНрд╕рд┐рдпрд╕ рд╕реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ BaseConverter рд╡рд░реНрдЧ рд▓рд┐рдЦреЗрдВ
рдХреЗрд▓реНрд╡рд┐рди , рдлрд╝рд╛рд░реЗрдирд╣рд╛рдЗрдЯ , рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдХрдирд╡рд░реНрдЯ рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ
рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди:

 interface Converter { double getConvertedValue(double baseValue); } class CelsiusConverter implements Converter { @Override public double getConvertedValue(double baseValue) { return baseValue; } } class KelvinConverter implements Converter { @Override public double getConvertedValue(double baseValue) { return baseValue + 273.15; } } class FahrenheitConverter implements Converter { @Override public double getConvertedValue(double baseValue) { return 1.8 * baseValue + 32; } } public class Main { public static void main(String[] args) { double temperature = 23.5; System.out.println("t = " + new CelsiusConverter().getConvertedValue(temperature)); System.out.println("t = " + new KelvinConverter().getConvertedValue(temperature)); System.out.println("t = " + new FahrenheitConverter().getConvertedValue(temperature)); } } 

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ , рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:

 interface Converter { double getConvertedValue(double baseValue); public static Converter getInstance(){ Locale locale = Locale.getDefault(); String[] fahrenheitCountries = {"BS", "US", "BZ", "KY", "PW"}; boolean isFahrenheitCountry = Arrays.asList(fahrenheitCountries).contains(locale.getCountry()); if(isFahrenheitCountry){ return new FahrenheitConverter(); } else { return new CelsiusConverter(); } } } 

6.1ред рдкреВрд░реНрд╡рд╡рдд рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧрд░


рдХрд╛рд░реНрдп: рдкреВрд░реНрд╡рд╡рдд

рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд▓ рдХреНрд▓рд╛рд╕ рдХреЛ рд▓рд┐рдЦреЗрдВ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ StringBuilder рдХреЗ рд▓рд┐рдП рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ , рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╡рдд () рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ ред рдпрд╣ рдЯреАрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ ред рд╕рдорд╛рдзрд╛рди:



 /** * StringBuilder    undo * java.lang.StringBuilder тАФ    <b>final</b>, *   ,  . */ class UndoableStringBuilder { private interface Action{ void undo(); } private class DeleteAction implements Action{ private int size; public DeleteAction(int size) { this.size = size; } public void undo(){ stringBuilder.delete( stringBuilder.length() - size, stringBuilder.length()); } } private StringBuilder stringBuilder; //  /** * ,   . *     append,    *  "delete".   undo()  *  . */ private Stack<Action> actions = new Stack<>(); //  public UndoableStringBuilder() { stringBuilder = new StringBuilder(); } /** see {@link java.lang.AbstractStringBuilder#reverse()}  ,   reverse(),      тАФ  reverse().    . */ public UndoableStringBuilder reverse() { stringBuilder.reverse(); Action action = new Action(){ public void undo() { stringBuilder.reverse(); } }; actions.add(action); return this; } public UndoableStringBuilder append(String str) { stringBuilder.append(str); Action action = new Action(){ public void undo() { stringBuilder.delete( stringBuilder.length() - str.length() -1, stringBuilder.length()); } }; actions.add(action); return this; } // .....    append   (. )...... public UndoableStringBuilder appendCodePoint(int codePoint) { int lenghtBefore = stringBuilder.length(); stringBuilder.appendCodePoint(codePoint); actions.add(new DeleteAction(stringBuilder.length() - lenghtBefore)); return this; } public UndoableStringBuilder delete(int start, int end) { String deleted = stringBuilder.substring(start, end); stringBuilder.delete(start, end); actions.add(() -> stringBuilder.insert(start, deleted)); return this; } public UndoableStringBuilder deleteCharAt(int index) { char deleted = stringBuilder.charAt(index); stringBuilder.deleteCharAt(index); actions.add(() -> stringBuilder.insert(index, deleted)); return this; } public UndoableStringBuilder replace(int start, int end, String str) { String deleted = stringBuilder.substring(start, end); stringBuilder.replace(start, end, str); actions.add(() -> stringBuilder.replace(start, end, deleted)); return this; } public UndoableStringBuilder insert(int index, char[] str, int offset, int len) { stringBuilder.insert(index, str, offset, len); actions.add(() -> stringBuilder.delete(index, len)); return this; } public UndoableStringBuilder insert(int offset, String str) { stringBuilder.insert(offset, str); actions.add(() -> stringBuilder.delete(offset, str.length())); return this; } // .....    insert   (. )...... public void undo(){ if(!actions.isEmpty()){ actions.pop().undo(); } } public String toString() { return stringBuilder.toString(); } } 

6.2ред рд░рд╛рдЬреНрдп рдирд┐рд░реНрдорд╛рдг рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ (рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди)


рдХрд╛рд░реНрдп:

рдЕрдкрдиреЗ StringBuilder рд╡рд░реНрдЧ рдХреЛ рд▓рд┐рдЦреЗрдВ, рдЗрд╕рдХреЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ StringBuilder рдХреЗ рд▓рд┐рдП рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ , рдФрд░ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдСрдмреНрдЬрд░реНрд╡рд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ ред

рд╕рдорд╛рдзрд╛рди:

 /** .  ,      UndoableStringBuilder,   onChange(). */ interface OnStringBuilderChangeListener { void onChange(OvservableStringBuilder stringBuilder); } class OvservableStringBuilder { // ,     private OnStringBuilderChangeListener onChangeListener; //  private StringBuilder stringBuilder; //   onChangeListener public void setOnChangeListener(OnStringBuilderChangeListener onChangeListener) { this.onChangeListener = onChangeListener; } public OvservableStringBuilder() { stringBuilder = new StringBuilder(); } private void notifyOnStringBuilderChangeListener(){ if(onChangeListener != null){ onChangeListener.onChange(this); } } public OvservableStringBuilder append(Object obj) { stringBuilder.append(obj); notifyOnStringBuilderChangeListener(); return this; } public OvservableStringBuilder replace(int start, int end, String str) { stringBuilder.replace(start, end, str); notifyOnStringBuilderChangeListener(); return this; } public OvservableStringBuilder insert(int index, char[] str, int offset, int len) { stringBuilder.insert(index, str, offset, len); notifyOnStringBuilderChangeListener(); return this; } // .......    .......... public String toString() { return stringBuilder.toString(); } } /**   OnStringBuilderChangeListener */ class MyListener implements OnStringBuilderChangeListener { /*   onChange    stringBuilder,  "" */ public void onChange(OvservableStringBuilder stringBuilder) { System.out.println("CHANGED: " + stringBuilder.toString()); } } public class Main { public static void main(String[] strings) { OvservableStringBuilder UndoableStringBuilder = new OvservableStringBuilder(); UndoableStringBuilder.setOnChangeListener(new MyListener()); UndoableStringBuilder.append("Hello"); UndoableStringBuilder.append(", "); UndoableStringBuilder.append("World!"); } } 

6.3ред рдлрд┐рд▓реНрдЯрд░


рд╕рдорд╕реНрдпрд╛:

рд▓рд┐рдЦреЗрдВ рд╡рд┐рдзрд┐ рдлрд┐рд▓реНрдЯрд░ , рдЬреЛ рдЗрдирдкреБрдЯ рд╕рд░рдгреА (рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реА рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ (рд╡рд╕реНрддреБ рдУ) , рд╕рд░рдгреА рд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ред
рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпрд╛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди:
рдЖрдорддреМрд░ рдкрд░, рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдЬреЗрдирд░рд┐рдХ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЫрд╛рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 interface Filter { boolean apply(Object o); } public class Main { public static Object[] filter(Object[] array, Filter filter) { int offset = 0; for(int i = 0; i< array.length; i++){ if(!filter.apply(array[i])){ offset++; } else{ array[i - offset] = array[i]; } } // Arrays.copyOf     array    //   array.length - offset return Arrays.copyOf(array, array.length - offset); } public static void main(String[] args) { String array[] = new String[]{"1rewf ", "feefewf", "a", null, "1"}; String[] newArray = (String[]) filter(array, new Filter() { @Override public boolean apply(Object o) { return o != null; } }); } } 

рд▓реЗрдХрд┐рди, рдпрд╣ рдЬреЗрдирд░рд┐рдХ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИред рддреЛ рдлрд┐рд░ рддреБрдо рдорд╛рдирдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╕рдорд╛рд░реЛрд╣ :

 public class Main { public static <T> T[] filter(T[] array, Function<? super T, Boolean> filter) { int offset = 0; for (int i = 0; i < array.length; i++) { if (!filter.apply(array[i])) { offset++; } else { array[i - offset] = array[i]; } } // Arrays.copyOf     array    //   array.length - offset return Arrays.copyOf(array, array.length - offset); } public static void main(String[] args) { String array[] = new String[]{"1rewf ", "feefewf", "a", null, "1"}; String[] newArray = filter(array, s -> s != null); } } 

6.4ред рдПрд░реЗ рдлрд┐рд▓рд┐рдВрдЧ


рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд╛рд░реНрдп:
рдПрдХ рднрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдпрд╛ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рднрд░рдг рдкрджреНрдзрддрд┐ рдХреЛ рд╕рд╛рд░рдгреА рдХреЛ рднрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирдпрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 public static void main(String[] args) { Integer[] squares = new Integer[100]; fill(squares, integer -> integer * integer); // 0, 1, 4, 9, 16 ..... } 

рд╕рдорд╛рдзрд╛рди:

 public static <T> void fill(T[] objects, Function<Integer, ? extends T> function) { for(int i = 0; i < objects.length; i++){ objects[i] = function.apply(i); } } 

рд╕рдВрдЧреНрд░рд╣



7.0ред рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА рдбрд┐рдХреНрд╢рдирд░реА рдСрдл рд╡рд░реНрдбреНрд╕


рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдЖрд╡реГрддреНрддрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреЗрдВ

7.1ред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдЧреНрд░рд╣


рдХрд╛рд░реНрдп:

рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдПрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди:

  public static <T> Collection<T> removeDuplicates(Collection<T> collection) { return new HashSet<>(collection); //   ! } 

7.2ред ArrayList рдФрд░ LinkedList


рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд▓рд┐рдЦреЗрдВ рдЬреЛ 1,000,000 рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ ArrayList рдФрд░ LinkedList рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдзрд┐ рд▓рд┐рдЦрд┐рдП рдЬреЛ рднрд░реА рд╣реБрдИ рд╕реВрдЪреА рдореЗрдВ рд╕реЗ 100,000 рдмрд╛рд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИред рдЗрд╕ рдкрд░ рдмрд┐рддрд╛рдП рд╕рдордп рдХреЛ рдорд╛рдкреЗрдВред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрдВ рдХрд┐ рд╡реЗ рдХреНрдпреЛрдВ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди:

  public static void compare2Lists() { ArrayList<Double> arrayList = new ArrayList<>(); LinkedList<Double> linkedList = new LinkedList<>(); final int N = 1000000; final int M = 1000; for (int i = 0; i < N; i++) { arrayList.add(Math.random()); linkedList.add(Math.random()); } long startTime = System.currentTimeMillis(); for (int i = 0; i < M; i++) { arrayList.get((int) (Math.random() * (N - 1))); } System.out.println(System.currentTimeMillis() - startTime); startTime = System.currentTimeMillis(); for (int i = 0; i < M; i++) { linkedList.get((int) (Math.random() * (N - 1))); } System.out.println(System.currentTimeMillis() - startTime); } 

7.3ред рдПрдХ рд╕рд░рдгреА рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд▓рд┐рдЦреЗрдВ


рд╕рдорд╛рдзрд╛рди:

 class ArrayIterator<T> implements Iterator<T>{ private T[] array; private int index = 0; public ArrayIterator(T[] array) { this.array = array; } @Override public boolean hasNext() { return index < array.length; } @Override public T next() { if(!hasNext()) throw new NoSuchElementException(); return array[index++]; } } 

7.4ред рджреНрд╡рд┐-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐


рдХрд╛рд░реНрдп:

рджреНрд╡рд┐-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд▓рд┐рдЦреЗрдВред

рд╕рдорд╛рдзрд╛рди:

 class Array2d<T> implements Iterable<T>{ private T[][] array; public Array2d(T[][] array) { this.array = array; } @Override public Iterator<T> iterator() { return new Iterator<T>() { private int i, j; @Override public boolean hasNext() { for(int i = this.i; i< array.length; i++){ for(int j = this.j; j< array[i].length; j++){ return true; } } return false; } @Override public T next() { if(!hasNext()) throw new NoSuchElementException(); T t = array[i][j]; j++; for(int i = this.i; i< array.length; i++){ for(int j = (i == this.i ? this.j : 0); j< array[i].length; j++){ this.i = i; this.j = j; return t; } } return t; } }; } } 


7.5ред рдПрдХ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐


рдореБрдЭреЗ рдпрд╣ рдХрд╛рд░реНрдп рдкрд╕рдВрдж рд╣реИред рд╡рд╣ рд╕рдореВрд╣ рдореЗрдВ рдХреБрдЫ рд╣реА рдЫрд╛рддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрддреА рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реЛрддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдп:

рджрд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ред рдЕрдЧрд▓реА () рдкрджреНрдзрддрд┐ рдпрд╛ рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдХрд░реНрддрд╛ (рдЬреЛ рдХрд┐ рдлрд┐рд░ рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рд╕рдорд╛рди рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ) рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд┐рдЦреЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдлреНрд▓реИрдЯ" рдПрдХред

рдвреЗрд░ рдкрд░ рд╕рдорд╛рдзрд╛рди:

 public class DeepIterator implements Iterator<String> { private Stack<Iterator> iterators; private String next; private boolean hasNext; public DeepIterator(Iterator<?> iterator) { this.iterators = new Stack<Iterator>(); iterators.push(iterator); updateNext(); } @Override public boolean hasNext() { return hasNext; } private void updateNext(){ if(iterators.empty()){ next = null; hasNext = false; return; } Iterator current = iterators.peek(); if (current.hasNext()) { Object o = current.next(); if (o instanceof String) { next = (String) o; hasNext = true; } else if (o instanceof Iterator) { Iterator iterator = (Iterator) o; iterators.push(iterator); updateNext(); } else { throw new IllegalArgumentException(); } } else { iterators.pop(); updateNext(); } } @Override public String next() throws NoSuchElementException { if(!hasNext){ throw new NoSuchElementException(); } String nextToReturn = next; updateNext(); return nextToReturn; } @Override public void remove() { throw new UnsupportedOperationException(); } } 

рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдорд╛рдзрд╛рди:

 /** * @author Irina Poroshina */ class DeepIterator implements Iterator<String> { private Iterator subIter; private DeepIterator newIter; public DeepIterator(Iterator iniIter) { this.subIter = iniIter; } @Override public boolean hasNext() { if (subIter.hasNext()) return true; if (newIter != null) return newIter.hasNext(); return false; } @Override public String next() { if(!hasNext()) throw new NoSuchElementException(); Object obj = null; if (newIter != null && newIter.hasNext()) obj = newIter.next(); if (subIter.hasNext() && obj == null) { obj = subIter.next(); if (obj instanceof Iterator && ((Iterator) obj).hasNext()) { newIter = new DeepIterator((Iterator) obj); } } if(obj instanceof Iterator){ obj = next(); } return (String) obj; } } 

7.6ред рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ Iterator


рдХрд╛рд░реНрдп:

рдПрдХ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдЬреЛ рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди:

 /** * @author Irina Poroshina */ class ConcatIterator<T> implements Iterator<T> { private Iterator<T> innerIterator1; private Iterator<T> innerIterator2; public ConcatIterator (Iterator<T> innerIterator1, Iterator<T> innerIterator2) { this.innerIterator1 = innerIterator1; this.innerIterator2 = innerIterator2; } @Override public boolean hasNext() { while (innerIterator1.hasNext()) return true; while (innerIterator2.hasNext()) return true; return false; } @Override public T next() { if(!hasNext()) throw new NoSuchElementException(); while (innerIterator1.hasNext()) return innerIterator1.next(); while (innerIterator2.hasNext()) return innerIterator2.next(); return null; } } 

7.7ред рдЧрд┐рдирддреА рдХреЗ рддрддреНрд╡


рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ K (рдЬреЗрдиреЗрд░рд┐рдХ) рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдХреНрд╢рд╛ <K, Integer> рджреЗрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ K рд╕рд░рдгреА рд╕реЗ рдорд╛рди рд╣реИ рдФрд░ Integer рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдпрд╣ рд╣реИ, рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 <K> Map<K, Integer> arrayToMap(K[] ks); 

рд╕рдорд╛рдзрд╛рди:

 public static <K> Map<K, Integer> countValues(K[] ks) { Map<K, Integer> map = new HashMap<>(); for (K k : ks) { map.compute(k, new BiFunction<K, Integer, Integer>() { @Override public Integer apply(K k, Integer count) { return count == null ? 1 : count + 1; } }); } return map; } 

7.8ред рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ рдФрд░ рдореВрд▓реНрдп рдмрджрд▓реЗрдВ


рдореИрдк <рдХреЗ, рд╡реА> рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдФрд░ рдореИрдк рдХреЛ рд▓реМрдЯрд╛рдПрдВ, рдЬрд╣рд╛рдВ рдЪрд╛рдмрд┐рдпрд╛рдБ рдФрд░ рдореВрд▓реНрдп рдЙрд▓рдЯ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдорд╛рди рд╕рдВрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдк рдореЗрдВ рдорд╛рди рдкреНрд░рдХрд╛рд░ рдЕрдм K рдирд╣реАрдВ рд╣реЛрдЧрд╛ , рд▓реЗрдХрд┐рди
 рд╕рдВрдЧреНрд░рд╣ <K>: 

 Map<V, Collection<K>> 

рд╕рдорд╛рдзрд╛рди:

 public static <K, V> Map<V, Collection<K>> inverse(Map<? extends K, ? extends V> map){ Map<V, Collection<K>> resultMap = new HashMap<>(); Set<K> keys = map.keySet(); for(K key : keys){ V value = map.get(key); resultMap.compute(value, (v, ks) -> { if(ks == null){ ks = new HashSet<>(); } ks.add(key); return ks; }); } return resultMap; } 

рдмрд╣реБ рд╕реВрддреНрд░рдг


8.0ред рд░рд╛рдЬреНрдпреЛрдВ


рдХрд╛рд░реНрдп:

рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдмрд╛рдж рд╕реНрдЯреНрд░реАрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди:

  Thread thread = new Thread() { @Override public void run() { System.out.println(getState()); } }; System.out.println(thread.getState()); thread.start(); try { //         TERMINATED: thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(thread.getState()); 

рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЕрд╡рд░реБрджреНрдз:

  /** *   WAITING * * @param strings * @throws InterruptedException */ public static void main(String[] strings) throws InterruptedException { Object lock = new Object(); Thread thread = new Thread() { @Override public void run() { try { synchronized (lock) { lock.notifyAll(); lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } }; synchronized (lock){ thread.start(); //   lock.wait(); //  ,     System.out.println(thread.getState()); // WAITING lock.notifyAll(); System.out.println(thread.getState()); // BLOCKED } } 

рдХреЗ рд▓рд┐рдП TIMED_WAITING рдереЛрдбрд╝рд╛ рд╣реА рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд:

  /** *   WAITING * * @param strings * @throws InterruptedException */ public static void main(String[] strings) throws InterruptedException { Object lock = new Object(); Thread thread = new Thread() { @Override public void run() { try { synchronized (lock) { lock.notifyAll(); lock.wait(3000); } } catch (InterruptedException e) { e.printStackTrace(); } } }; synchronized (lock) { thread.start(); //   lock.wait(); //  ,     System.out.println(thread.getState()); // WAITING } } 

8.1ред рдзрд╛рдЧрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди


рдХрд╛рд░реНрдп:

рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдереНрд░реЗрдб рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рдЕрдкрдирд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди:

 class StepThread extends Thread { //     lock private Object lock; public StepThread(Object object) { this.lock = object; } /** *  :   ,   , *     ,  ,    . * *     lock.notify()   *   ,  , *  lock   .    ,   *  lock.wait(),      .    . */ @Override public void run() { while (true) { synchronized (lock) { try { System.out.println(getName()); lock.notify(); lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } public class Main { public static void main(String[] strings) { Object lock = new Object(); new StepThread(lock).start(); new StepThread(lock).start(); } } 

8.2ред рдирд┐рд░реНрдорд╛рддрд╛-рдЙрдкрднреЛрдХреНрдд


рдХреНрд▓рд╛рд╕рд┐рдХ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред рджреЛ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП - рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ред рдирд┐рд░реНрдорд╛рддрд╛ рдХреБрдЫ рдбреЗрдЯрд╛ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ рдЙрдиреНрд╣реЗрдВ "рдЦрдкрдд" рдХрд░рддрд╛ рд╣реИред
рджреЛ рд╕реНрдЯреНрд░реАрдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдмрдлрд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ рд╕реАрдорд┐рдд рд╣реИред рдпрджрд┐ рдмрдлрд░ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд╡рд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдмрдлрд░ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓реЗ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЬрдЧрд╣ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдирд┐рд░реНрдорд╛рддрд╛:

 // implements Runnable      class Producer implements Runnable { //   private final Queue<Double> sharedQueue; //   private final int SIZE; //  public Producer(Queue<Double> sharedQueue, int size) { this.sharedQueue = sharedQueue; this.SIZE = size; } @Override public void run() { //   while (true) { try { //     produce System.out.println("Produced: " + produce()); } catch (InterruptedException e) { e.printStackTrace(); } } } private double produce() throws InterruptedException { synchronized (sharedQueue) { //  synchronized if (sharedQueue.size() == SIZE) { //   ,   sharedQueue.wait(); } //    . double newValue = Math.random(); sharedQueue.add(newValue); //     ,    sharedQueue.notifyAll(); return newValue; } } } 

рдЙрдкрднреЛрдХреНрддрд╛:

 // implements Runnable      class Consumer implements Runnable { //   private final Queue<Double> sharedQueue; public Consumer(Queue<Double> sharedQueue) { this.sharedQueue = sharedQueue; } @Override public void run() { while (true) { try { System.out.println("Consumed: " + consume()); } catch (InterruptedException ex) { ex.printStackTrace(); } } } // ,      private Double consume() throws InterruptedException { synchronized (sharedQueue) { if (sharedQueue.isEmpty()) { //  ,   sharedQueue.wait(); } sharedQueue.notifyAll(); return sharedQueue.poll(); } } } 

рдмрдирд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:

 public static void main(String[] strings) { LinkedList<Double> sharedQueue = new LinkedList<>(); int size = 4; Thread prodThread = new Thread(new Producer(sharedQueue, size), "Producer"); Thread consThread = new Thread(new Consumer(sharedQueue), "Consumer"); prodThread.start(); consThread.start(); } 

9.0ред рдЦреБрдж рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди - рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдкрдпреЛрдЧ


рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдХрд╛рд░реНрдп рджреЗрддрд╛ рд╣реВрдВ рдЬрдм рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЖрдк рдПрдХреНрдЬрд┐рдХреНрдпреВрдЯрд░реНрд╕ , рдереНрд░реЗрдбрдкреВрд▓ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдФрд░ рдЕрдиреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЯрд╛рд╕реНрдХ: рдкреВрд░реНрдгрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде

рдЕрдкрдирд╛ рд░рд┐рдкреАрдЯ рдПрдиреЛрдЯреЗрд╢рди рдмрдирд╛рдПрдВ ред
рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ ThreadPoolExecutor рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдпрджрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг Runnable рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рддреА рд╣реИ рджреЛрд╣рд░рд╛рдПрдБ , рддреЛ рдЗрд╕рдХреА рд╡рд┐рдзрд┐ рд░рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрдИ рдмрд╛рд░ (рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджреЛрд╣рд░рд╛рдПрдБ )ред

рдЕрд░реНрдерд╛рддреН, рдпрд╣ рд╡рд░реНрдЧ рд▓рд┐рдЦрдХрд░:

 @Repeat(3) class MyRunnable implements Runnable{ @Override public void run() { System.out.println("Hello!"); } } 

рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:

 public static void main(String[] strings) { CustomThreadPoolExecutor customThreadPoolExecutor = new CustomThreadPoolExecutor(10); customThreadPoolExecutor.execute(new MyRunnable()); } 

рд╣рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 Hello! Hello! Hello! 

рд╕рдорд╛рдзрд╛рди:

 @Retention(RetentionPolicy.RUNTIME) @interface Repeat { int value(); } class CustomThreadPoolExecutor extends ThreadPoolExecutor { public CustomThreadPoolExecutor(int corePoolSize) { // why Integer.MAX_VALUE, 0m and TimeUnit.MILLISECONDS? // see Executors.newFixedThreadPool(int nThreads) super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>()); } @Override public void execute(Runnable command) { if (command != null) { Class<? extends Runnable> runnableClass = command.getClass(); Repeat repeat = runnableClass.getAnnotation(Repeat.class); for (int i = 0; i < (repeat != null ? repeat.value() : 1); i++) { super.execute(command); } } } } 

рдЕрдВрддрд┐рдо рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдп


рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдХрдИ рдХрдард┐рди рдХрд╛рд░реНрдп рджреЗрддрд╛ рд╣реВрдВ - рдкреВрд░реЗ рдкрд╛рда рдХреЗ рд▓рд┐рдПред рдкрд╣рд▓реЗ рд╕реЗ рд╕реАрдЦреЗ рдЧрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рдЕрдХреНрд╕рд░ рдЬрдЯрд┐рд▓рддрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдмрд╛рдд рд╣реИ, рдФрд░ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рд╕рдм рдХреБрдЫ рдпрд╛рдж рд░рдЦреЗрдВ рдЬреЛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрднреА рднреА 50 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╛рда рдореЗрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдзрдХреЗрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдбрд┐рдмреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рд╣реА рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рддрд░реАрдХреЗ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЗрд╕ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рджреЗрддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рднреА рдХреЛ рдЕрдВрддрд┐рдо рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдШрд░ рдкрд░, рдЕрдкрдиреЗ рджрдо рдкрд░, рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВред рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ред рдореИрдВ рдЖрдкрдХреЛ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЪреБрдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реВрдВред рд╡реИрд╕реЗ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдк рдПрдХ рд╕рд╛рде рдХрдИ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡реНрдпрдХреНрддрд┐ рдпрд╛рдж рд╣реИ рдЬрд┐рд╕рдиреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рд┐рдЦрд╛ рд╣реИред

10.0ред рд╕рдбрд╝рдХ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдп рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдбрд╛рдЯрд╛ рддреИрдпрд╛рд░реА:
рдХреЗ рд╕рд╛рде рдкреЛрд░реНрдЯрд▓ рдЦреБрд▓рд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рд▓реЛрдб рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд╣рди рдХреА рдЖрд╡рд╛рдЬрд╛рд╣реА рдХреА рд╕реАрдорд╛ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реАрдПрд╕рд╡реА ред

рдХрд╛рд░реНрдп:

рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд┐рдерд┐ рдкрд░ рд╢рд╣рд░ рдореЗрдВ рдХрд┐рддрдиреЗ рд╕рдбрд╝рдХ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдереЗред

рдХрд╛рд░реНрдпрдХреНрд░рдо рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ:

  • рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде
  • рддрд┐рдерд┐

рдпрд╣ рд╣реИ, рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:

 java TrafficBlocks "PATH_TO_CSV_FILE" dd.MM.yyyy 

рдЗрд╕ рддрд┐рдерд┐ рдкрд░ рд▓рд╛рдЧреВ рдпрд╛рддрд╛рдпрд╛рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЕрдиреБрдХрд░рдгреАрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд░реНрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░реЗ
  • рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗрдВ
  • рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕ (рджреЗрдЦреЗрдВред Https://stackoverflow.com/questions/15738918/splitting-a-csv-file-with-quotes-as-text-delimiter-using-string-split )
  • рдХрд┐рд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рджрд┐рдирд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк SimpleDateFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рддрд╛рд░реАрдЦреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ

рд╡реИрд╕реЗ, рд╕рднреА рд╕рдордп рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдбреЗрдЯрд╛ (yyyMMdd) рдореЗрдВ рджрд┐рдирд╛рдВрдХ рд╕реНрд╡рд░реВрдк рдРрд╕рд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВред рддреЛ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рджрд┐рдирд╛рдВрдХ, рдХреИрд▓реЗрдВрдбрд░, DateFormat рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛ред

рдореИрдВ рдпрд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рд╛рддрд╛, рд╡реЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

10.1редрд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдЦреЛрдЬред рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ


рдХрд╛рд░реНрдп:

рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВ, рдЬреЛ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдХреЛ 4 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. рдЕрдиреБрд░реЛрдз рдкрдврд╝реЗрдВ
  2. рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
  3. рдЙрддреНрддрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
  4. рдкреНрд░рд┐рдВрдЯ рдкрд░рд┐рдгрд╛рдо

рдкрд╣рд▓реЗ рдФрд░ рдЪреМрдереЗ рдмрд┐рдВрджреБ рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдЗрдП рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рднреА рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдЕрдиреБрд░реЛрдз рдЬрдирд░реЗрд╢рди
  2. рд╕рд░реНрд╡рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз
  3. рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА рдХрд░ рд░рд╣рд╛ рд╣реИ
  4. рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рдЖрдЗрдП рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдПрдкреАрдЖрдИ

рдЕрдиреБрд░реЛрдз рдкреАрдврд╝реА
рдмрд┐рдирд╛ рдЪрд╛рдмреА рдХреЗ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЗрд╕ рддрд░рд╣, рд▓рдЧрднрдЧ:

 https://ru.wikipedia.org/w/api.php?action=query&list=search&utf8=&format=json&srsearch="Java" 

рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд┐рдВрдХ рд╕реЗ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН , рдкреНрд░рддрд┐рд╢рдд-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░реЗрдВ , рдЬреЛ URL рдПрдирдХреЛрдбрд┐рдВрдЧ рднреА рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдореЗрдВ, рдЖрдк рдЗрд╕ рддрд░рд╣ URLEncoder рд╡рд░реНрдЧ рдореЗрдВ рд╕реНрдерд┐рд░ рдПрдирдХреЛрдб рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :

 street = URLEncoder.encode(street, "UTF-8"); 

рдпрд╣ рдмрд╛рдд рд╣реИ, URL рддреИрдпрд╛рд░ рд╣реИ! рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдмрдирд╛ рд╣реБрдЖ рд╣реИ ... рд╕рд░реНрд╡рд░ рд╕реЗ

рдЕрдиреБрд░реЛрдз
рдХрд░реЗрдВ GET рдФрд░ POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк HttpURLConnection рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИред рдмрд╕ рдмрдирд╛рдПрдВ, рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдЗрдирдкреБрдЯрд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ред рд╣рдореЗрдВ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рднреА рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП Gson рдХрд░реЗрдЧрд╛ ред
рдЖрдк рд░реЗрдЯреНрд░реЛрдлрд┐рдЯ , рдпрд╛ рдХреБрдЫ рд╕рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА
рд╕рд░реНрд╡рд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рджреЗрддрд╛ рд╣реИ ред
рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП Google рд╕реЗ рдПрдХ Gson рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рд╣реИрдВ:
https://github.com/google/gson
https://habrahabr.ru/company/naumen/blog/228279/

рдпрджрд┐ рд╕рдордп рдмрдЪрд╛ рд╣реИ, рддреЛ рдЖрдк рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди рдЪреБрдиреЗ рдЧрдП рд▓реЗрдЦ рдХреА рд░рд╕реАрдж рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ред

10.2ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп - HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛


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

10.3ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп - рдореМрд╕рдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо-рдмреЙрдЯ


рдХрд╛рд░реНрдп:

рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦреЗрдВ, рдЬреЛ рд╣реЛрдЧрд╛:

  • .
  • , . /subscribe. (/unsubscribe).

рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк https://openweathermap.org/api рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рдпрд╣ рдХрд╛рд░реНрдп рдирдИ рддрдХрдиреАрдХ (рдмреЙрдЯ-рдЕрдкреА) рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдХреНрд╖рдорддрд╛ рдкрд░ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рд╡реАрдкреАрдПрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рдФрд░ рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдмрд┐рд▓реНрдХреБрд▓ред

рд╡реИрд╕реЗ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЫрд╛рддреНрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рднреЗрдЬреЗ рдЧрдП рд╕реНрдерд╛рди" рдФрд░ рдЗрд╕реЗ рднреЗрдЬрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╢рд╣рд░ рдХреЗ рдирд╛рдо рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рдпрд╣ рдЕрдХреНрд╕рд░ рдЦрд░рд╛рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ , рдХреЛрдб рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

10.4ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп - рд▓рд┐рдЦрд╛рд╡рдЯ рдХреА рдорд╛рдиреНрдпрддрд╛


рдЙрджреНрджреЗрд╢реНрдп:

рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд╛рдЧреВ рдХрд░реЗрдВред
рдпрд╣ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЖрдорддреМрд░ рдкрд░ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХрд╛рд░реНрдп рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЕрдзреНрдпрдпрди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рдЕрдВрдХреЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ MNIST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 28x28 рд╣реИ рдФрд░ рдЗрд╕реЗ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдорд╛рдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдкреНрд░рд╢рд┐рдХреНрд╖рдг, рдЬрд┐рд╕рдореЗрдВ 50,000 рдЪрд┐рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдг - 10,000 рдЪрд┐рддреНрд░ред

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

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЖрдкрдХреЛ

рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рди рд▓реЗрдЧрд╛ред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдПрдХрд▓ рдЫрд╡рд┐ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕рдЯреАрдХрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рддреНрд░реБрдЯрд┐ рджрд░ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 10,000 рдкрд░реАрдХреНрд╖рдг рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╕рдЯреАрдХрддрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ: рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рдореАрдЯреНрд░рд┐рдХ рдХреЗ рдмрдЬрд╛рдп , рд╢рд╣рд░ рдХреЗ рдмреНрд▓реЙрдХреЛрдВ рдХреА рджреВрд░реА , рд╡реИрдХреНрдЯрд░ рдпрд╛ рдХреБрдЫ рдФрд░ рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ , рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА

рдпрджрд┐ рд╕рдмрдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реЛрд░ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ (рдЙрддреНрд╕рд░реНрдЬрди) рдпрд╛ рд╕рдЯреАрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рдЬреЗрдиреЛрд╡рд╕реНрдХреА рдЦрд┐рдбрд╝рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ ред

рдХреБрдЫ рдФрд░ рд╢рдмреНрдж


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢рд╛рдВрдд рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдЖрдк рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдорд╛рдзрд╛рди рд╕рдордп рдПрдХ рдпрд╛ рджреЛ рдШрдВрдЯреЗ рд╣реИ), рддреЛ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi440436/


All Articles