package Ġhome work _ 5 Ċ Ċ import Ġutils . change Format Ċ import Ġutils . getKey Ċ import Ġutils . getValue Ċ import Ġjava . io . File Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ val Ġactions Ġ= ĠlistOf ( Add (), ĠRemove (), ĠGet (), ĠContains (), ĠGet Statistics (), ĠFill FromFile (), ĠChange Hash Function ()) Ċ Ċ interface ĠAction Ġ{ ĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠ Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ċ } Ċ Ċ class ĠAdd Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" add " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . add ( getKey (), ĠgetValue ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRemove Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" remove " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . remove ( getKey ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGet Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" get " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( table [ getKey ()]) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠContains Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" contains " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( table . contains ( getKey ())) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGet Statistics Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" get Ġstatistics " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint ( table . get Statistics ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFill FromFile Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" fill Ġfrom Ġfile " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" enter Ġfile Ġname ") ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġjava . util . Scanner ( System .` in `). next () ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFile ( Fill FromFile :: class . java . getResource ( fileName ). path ). read Text () ĊĠĠĠĠĠĠĠ Ġval Ġpairs Ġ= Ġinput . change Format () ĊĠĠĠĠĠĠĠ Ġpairs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġit . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . add ( pair . first (), Ġpair . last (). toDouble ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠChange Hash Function Ġ: ĠAction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" change Ġhash Ġfunction " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( table : ĠHash Table < String , ĠDouble >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" enter Ġthe Ġnumber Ġof Ġfunction , Ġwhich Ġyou Ġwant Ġto Ġuse ") ĊĠĠĠĠĠĠĠ Ġwhen Ġ( java . util . Scanner ( System .` in `). next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 " Ġ-> Ġtable . change Hash Function ( Default Hash Function 1 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 " Ġ-> Ġtable . change Hash Function ( Default Hash Function 2 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 " Ġ-> Ġtable . change Hash Function ( Default Hash Function 3 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" you Ġmust Ġenter Ġthe Ġnumber Ġin Ġrange Ġ 1 .. 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ