package Ġandroid . util Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ class ĠL ru Cache < K , ĠV >( val Ġsize : ĠInt ) Ġ{ Ċ ĉ val Ġorder Ġ= ĠLinkedList < K >() Ċ ĉ val Ġstorage Ġ= ĠHashMap < K , ĠV >( size ) ĊĊ ĉ fun Ġput ( key : ĠK , Ġvalue : ĠV ): ĠV Ġ{ Ċĉ ĉ // Ġmove Ġthe Ġexisting Ġkey Ġto Ġthe Ġfront Ġof Ġthe Ġlist Ċĉ ĉ order . remove ( key ) Ċĉ ĉ order . push ( key ) ĊĊĉ ĉ // Ġif Ġsize Ġis Ġtoo Ġbig , Ġprune Ċĉ ĉ if Ġ( order . size Ġ> Ġsize ) Ġ{ Ċĉĉ ĉ val Ġremove Key Ġ= Ġorder . remove Last () Ċĉĉ ĉ storage . remove ( remove Key ) Ċĉ ĉ } ĊĊĉ ĉ storage [ key ] Ġ= Ġvalue Ċĉ ĉ return Ġvalue Ċ ĉ } ĊĊ ĉ fun Ġget ( key : ĠK ): ĠV ? Ġ{ Ċĉ ĉ // Ġmove Ġthe Ġkey Ġto Ġthe Ġfront Ġof Ġthe Ġlist Ċĉ ĉ val Ġexists Ġ= Ġorder . remove ( key ) Ċĉ ĉ if Ġ( exists ) Ġ{ Ċĉĉ ĉ order . push ( key ) Ċĉ ĉ } ĊĊĉ ĉ return Ġstorage [ key ] Ċ ĉ } Ċ }