package Ġcom . example . city search . utilities Ċ Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠUtilities Ġfor ĠCollections Ċ Ġ* Ċ Ġ* ĠSur prising ly , ĠJava / Kotlin Ġdoesn 't Ġhave Ġall Ġthe Ġtools Ġfor Ġ" spatial " Ġcollections Ġthat ĠRx Ġhas Ġfor Ġ" temporal " Ġcollections Ċ Ġ*/ Ċ class ĠCollection Utilities Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun < T 1 , ĠT 2 > Ġzip ( first : ĠArray < T 1 >, Ġsecond : ĠList < T 2 >): ĠList < Pair < T 1 , ĠT 2 >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġzip ( first . toList (), Ġsecond ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun < T 1 , ĠT 2 > Ġzip ( first : ĠList < T 1 >, Ġsecond : ĠArray < T 2 >): ĠList < Pair < T 1 , ĠT 2 >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġzip ( first , Ġsecond . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun < T 1 , ĠT 2 > Ġzip ( first : ĠArray < T 1 >, Ġsecond : ĠArray < T 2 >): ĠList < Pair < T 1 , ĠT 2 >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġzip ( first . toList (), Ġsecond . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun < T 1 , ĠT 2 > Ġzip ( first : ĠList < T 1 >, Ġsecond : ĠList < T 2 >): ĠList < Pair < T 1 , ĠT 2 >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġmin ( first . size , Ġsecond . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠArrayList < Pair < T 1 , ĠT 2 >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( index Ġin ĠInt Range ( 0 , Ġcount Ġ- Ġ 1 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( Pair ( first [ index ], Ġsecond [ index ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }