@ file : Suppress (" UNUSED _ PARAMETER ") Ċ Ċ package Ġlesson 1 2 . task 1 Ċ Ċ /** Ċ Ġ* ĠÐļ Ð»Ð°ÑģÑģ Ġ" Ñħ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ð° ĠÑģ ĠÐ¾ÑĤ Ðº ÑĢÑĭ ÑĤ Ð¾Ð¹ ĠÐ° Ð´ ÑĢÐµÑģ Ð°ÑĨÐ¸ ÐµÐ¹ " Ċ Ġ* Ċ Ġ* ĠÐŀ Ð± Ñī Ð°Ñı ĠÑģÐ» Ð¾Ð¶ Ð½Ð¾ÑģÑĤÑĮ ĠÐ·Ð°Ð´ Ð°Ð½Ð¸Ñı Ġ-- ĠÑģÐ» Ð¾Ð¶ Ð½Ð°Ñı , ĠÐ¾Ð± Ñī Ð°Ñı ĠÑĨ ÐµÐ½ Ð½Ð¾ÑģÑĤÑĮ ĠÐ² ĠÐ± Ð°Ð» Ð»Ð° Ñħ Ġ-- Ġ 2 0 . Ċ Ġ* ĠÐŀ Ð± ÑĬ ÐµÐºÑĤ ĠÐºÐ»Ð°ÑģÑģ Ð° ĠÑħ ÑĢÐ°Ð½ Ð¸ÑĤ ĠÐ´Ð°Ð½ Ð½ÑĭÐµ ĠÑĤÐ¸Ð¿ Ð° ĠT ĠÐ² ĠÐ²Ð¸Ð´ Ðµ ĠÑħ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ . Ċ Ġ* ĠÐ ¥ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ð° ĠÐ½Ðµ ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÑģ Ð¾Ð´ÐµÑĢÐ¶ Ð°ÑĤÑĮ ĠÑĢÐ°Ð ² Ð½ÑĭÐµ ĠÐ¿Ð¾ Ġequals ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ñĭ . Ċ Ġ* ĠÐŁ Ð¾Ð´ ÑĢ Ð¾Ð± Ð½Ð¾ÑģÑĤÐ¸ ĠÐ¿Ð¾ ĠÐ¾ ÑĢ Ð³ Ð°Ð½Ð¸ Ð· Ð°ÑĨÐ¸Ð¸ ĠÑģÐ¼ . ĠÑģÑĤ Ð°ÑĤÑĮ Ñİ ĠÐ² Ð¸ ÐºÐ¸ Ð¿ ÐµÐ´ Ð¸Ð¸ Ġ" Ð ¥ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ð° ", ĠÑĢÐ°Ð· Ð´ÐµÐ» Ġ" Ðŀ ÑĤ Ðº ÑĢÑĭ ÑĤ Ð°Ñı ĠÐ° Ð´ ÑĢÐµÑģ Ð°ÑĨÐ¸Ñı ". Ċ Ġ* ĠÐľ ÐµÑĤ Ð¾Ð´ Ñĭ : ĠÐ´Ð¾Ð±Ð°Ð² Ð»ÐµÐ½Ð¸Ðµ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° , ĠÐ¿ÑĢ Ð¾Ð²ÐµÑĢ ÐºÐ° ĠÐ² Ñħ Ð¾Ð¶ Ð´ ÐµÐ½Ð¸Ñı ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° , ĠÑģ ÑĢÐ°Ð² Ð½ ÐµÐ½Ð¸Ðµ ĠÐ´Ð² Ñĥ Ñħ ĠÑĤ Ð°Ð±Ð»Ð¸ÑĨ ĠÐ½Ð° ĠÑĢÐ°Ð ² ÐµÐ½ ÑģÑĤÐ² Ð¾ . Ċ Ġ* ĠÐĴ ĠÑįÑĤ Ð¾Ð¼ ĠÐ·Ð°Ð´ Ð°Ð½Ð¸ Ð¸ ĠÐ½Ðµ ĠÑĢÐ°Ð· ÑĢ ÐµÑĪ Ð°ÐµÑĤÑģÑı ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°ÑĤÑĮ ĠÐ± Ð¸Ð± Ð»Ð¸ Ð¾ÑĤ ÐµÑĩ Ð½ÑĭÐµ ĠÐºÐ»Ð°ÑģÑģ Ñĭ ĠHashSet , ĠHashMap ĠÐ¸ ĠÐ¸Ð¼ ĠÐ¿Ð¾Ð´ Ð¾Ð± Ð½ÑĭÐµ , Ċ Ġ* ĠÐ° ĠÑĤÐ°Ðº Ð¶Ðµ ĠÐ»Ñİ Ð± ÑĭÐµ ĠÑĦÑĥÐ½Ðº ÑĨÐ¸Ð¸ , ĠÑģ Ð¾Ð· Ð´Ð° Ñİ ÑīÐ¸Ðµ ĠÐ¼ Ð½ Ð¾Ð¶ ÐµÑģÑĤÐ² Ð° Ġ( mutable Set Of ĠÐ¸ ĠÐ¿ÑĢ .). Ċ Ġ* Ċ Ġ* ĠÐĴ ĠÐºÐ¾Ð½ ÑģÑĤ ÑĢÑĥÐº ÑĤÐ¾ÑĢ ĠÑħ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ ĠÐ¿ÐµÑĢ ÐµÐ´ Ð° Ñĳ ÑĤ ÑģÑı ĠÐµ Ñĳ ĠÐ² Ð¼ ÐµÑģÑĤ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ Ġ( Ð¼ Ð°Ðº Ñģ Ð¸Ð¼ Ð°Ð»ÑĮ Ð½Ð¾Ðµ ĠÐºÐ¾Ð» Ð¸Ñĩ ÐµÑģÑĤÐ²Ð¾ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² ) Ċ Ġ*/ Ċ class ĠOpen HashSet < T >( val Ġcapacity : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐľ Ð°ÑģÑģ Ð¸Ð² ĠÐ´Ð»Ñı ĠÑħ ÑĢÐ°Ð½ ÐµÐ½Ð¸Ñı ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² ĠÑħ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġelements Ġ= ĠArray < Any ? >( capacity ) Ġ{ Ġnull Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ § Ð¸Ñģ Ð»Ð¾ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² ĠÐ² ĠÑħ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ðµ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġsize Impl Ġ= Ġ 0 ĊĠĠĠ Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsize Impl ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢÐ¸ Ð· Ð½ Ð°Ðº ĠÐ¿ ÑĥÑģÑĤ Ð¾ÑĤ Ñĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ= Ġsize Ġ== Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĶ Ð¾Ð±Ð°Ð² Ð»ÐµÐ½Ð¸Ðµ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° . ĊĠĠĠĠ Ġ* ĠÐĴ ÐµÑĢ Ð½ Ñĥ ÑĤÑĮ Ġtrue , ĠÐµÑģÐ»Ð¸ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÐ±Ñĭ Ð» ĠÑĥ ÑģÐ¿ ÐµÑĪ Ð½Ð¾ ĠÐ´Ð¾Ð±Ð°Ð² Ð»ÐµÐ½ , ĊĠĠĠĠ Ġ* ĠÐ¸Ð»Ð¸ Ġfalse , ĠÐµÑģÐ»Ð¸ ĠÑĤÐ°Ðº Ð¾Ð¹ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÑĥ Ð¶Ðµ ĠÐ±Ñĭ Ð» ĠÐ² ĠÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ðµ , ĠÐ¸Ð»Ð¸ ĠÐ¿ÑĢ ÐµÐ² Ñĭ ÑĪ ÐµÐ½Ð° ĠÐ² Ð¼ ÐµÑģÑĤ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ ĠÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ== Ġcapacity ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġelement . hashCode () Ġ% Ġcapacity ĊĠĠĠĠĠĠĠ Ġif Ġ( elements [ index ] Ġ== Ġelement ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġwhile Ġ( elements [ index ] Ġ!= Ġnull ) Ġindex Ġ= Ġ( index Ġ+ Ġ 1 ) Ġ% Ġcapacity ĊĠĠĠĠĠĠĠ Ġelements [ index ] Ġ= Ġelement ĊĠĠĠĠĠĠĠ Ġsize Impl ++ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ ÑĢÐ¾Ð² ÐµÑĢ ÐºÐ° , ĠÐ² ÑħÐ¾Ð´ Ð¸ÑĤ ĠÐ» Ð¸ ĠÐ·Ð°Ð´ Ð°Ð½ Ð½ÑĭÐ¹ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÐ² ĠÑħ ÐµÑĪ - ÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġcontains ( element : ĠT ) Ġ= Ġcontains Object ( element ) ĊĊĠĠĠ Ġprivate Ġfun Ġcontains Object ( any : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstartIndex Ġ= Ġany . hashCode () Ġ% Ġcapacity ĊĠĠĠĠĠĠĠ Ġif Ġ( elements [ startIndex ] Ġ== Ġany ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ( startIndex Ġ+ Ġ 1 ) Ġ% Ġcapacity ĊĠĠĠĠĠĠĠ Ġwhile Ġ( any Ġ!= Ġelements [ index ] Ġ&& Ġindex Ġ!= ĠstartIndex ) Ġindex Ġ= Ġ( index Ġ+ Ġ 1 ) Ġ% Ġcapacity ĊĠĠĠĠĠĠĠ Ġreturn Ġindex Ġ!= ĠstartIndex ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¢ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ ĠÑĢÐ°Ð ² Ð½Ñĭ , ĠÐµÑģÐ»Ð¸ ĠÐ² ĠÐ½ Ð¸Ñħ ĠÐ¾Ð´ Ð¸Ð½ Ð°Ðº Ð¾Ð² Ð¾Ðµ ĠÐºÐ¾Ð» Ð¸Ñĩ ÐµÑģÑĤÐ²Ð¾ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² , ĊĠĠĠĠ Ġ* ĠÐ¸ ĠÐ»Ñİ Ð± Ð¾Ð¹ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ ĠÐ¸Ð· ĠÐ² ÑĤÐ¾ÑĢ Ð¾Ð¹ ĠÑĤ Ð°Ð±Ð»Ð¸ÑĨ Ñĭ ĠÐ² ÑħÐ¾Ð´ Ð¸ÑĤ ĠÑĤÐ°Ðº Ð¶Ðµ ĠÐ¸ ĠÐ² ĠÐ¿ÐµÑĢ Ð² ÑĥÑİ ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠOpen HashSet < *> ĊĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ!= Ġother . size ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( other Element Ġin Ġother . elements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Element Ġ!= Ġnull Ġ&& Ġ! this . contains Object ( other Element )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġelements . sum Of Ġ{ Ġit ?. hashCode () Ġ?: Ġ 0 } Ċ }