package Ġcom . hu aw en . base library . utils Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Single Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġv icky Ġon Ġ 2 0 1 8 . 0 2 . 0 1 . Ċ Ġ* Ċ Ġ* Ġ@ Author Ġv icky Ċ Ġ* Ġ@ Date Ġ 2 0 1 8 å¹´ 0 2 æľĪ 0 1 æĹ¥ ĠĠ 1 8 : 1 6 : 2 6 Ċ Ġ* Ġ@ ClassName Ġ æİĴåºı å·¥åħ· , rx java çº¿ç¨ĭ è°ĥ åº¦ Ċ Ġ*/ Ċ object ĠRx Sorter Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĪĲåĬŁ æĪĸ å¤±è´¥ éĥ½ä¼ļ è°ĥçĶ¨ fun 1 Ġ Ġlambda åĩ½æķ° ĊĠĠĠĠ Ġ* ĠéľĢè¦ģ èĩªå·± åģļ ç©º æĮĩéĴĪ å¤ĦçĲĨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġsort ( observable : ĠObservable < List < T >? >, Ġfun 0 : Ġ( T , ĠT ) Ġ-> ĠInt , Ġfun 1 : Ġ( List < T > ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobservable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDe bu ger . print (" do On Next Ġ${ it ?. size }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort ( it , Ġfun 0 , Ġfun 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis MainThread () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun 1 ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĪĲåĬŁ æĪĸ å¤±è´¥ éĥ½ä¼ļ è°ĥçĶ¨ fun 1 Ġ Ġlambda åĩ½æķ° ĊĠĠĠĠ Ġ* ĠéľĢè¦ģ èĩªå·± åģļ ç©º æĮĩéĴĪ å¤ĦçĲĨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġsort ( list : ĠList < T > ?, Ġfun 0 : Ġ( T , ĠT ) Ġ-> ĠInt , Ġfun 1 : Ġ( List < T > ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable . from Iterable ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Sort edList Ġ{ Ġt 1 , Ġt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis MainThread (" to Sort edList ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t 1 Ġ== Ġnull Ġ&& Ġt 2 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ to Sort edList Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t 1 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ to Sort edList Ġ 0 . compareTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( t 2 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ to Sort edList Ġ 1 . compareTo ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ to Sort edList Ġfun 0 ( t 1 , Ġt 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . computation ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠSingle Observer < List < T > ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( value : ĠList < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun 1 ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun 1 ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }