package Ġcom . b aj dcc . util Ċ Ċ import Ġcom . google . common . collect . Bi Map Ċ import Ġcom . google . common . collect . Hash Bi Map Ċ Ċ /** Ċ Ġ* Ġ åıĮ åĲĳ åĵĪ å¸Į è¡¨ Ċ Ġ* Ġ[ T ] Ġ-> ĠInt Ċ Ġ* Ġ@ author Ġb aj dcc Ċ Ġ*/ Ċ class ĠHash List Map < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmap : ĠBi Map < T , ĠInt > Ġ= ĠHash Bi Map . create () ĊĊĠĠĠ Ġoperator Ġfun Ġcontains ( t : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmap . containsKey ( t ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( t : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! map . containsKey ( t )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ t ] Ġ= Ġmap . size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput ( t : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( map . containsKey ( t )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap [ t ] !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd ( t ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmap . size Ġ- Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠindexOf ( t : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmap [ t ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠforEach ( f : Ġ( T ) Ġ-> ĠUnit ) Ġ= Ġmap . forEach Ġ{ Ġf ( it . key ) Ġ} ĊĠĠĠ Ġfun Ġto List () Ġ: ĠList < T > Ġ= Ġmap . toList (). map Ġ{ Ġit . first !! Ġ} ĊĠĠĠ Ġfun Ġget ( index : ĠInt ): ĠT Ġ= Ġmap . inverse ()[ index ] !! Ċ }