рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╕реНрдХрд╛рд▓рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рдореБрджрд╛рдп рдореЗрдВ, рдЯрд╛рдЗрдк рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреЛрдб рдХреЛ рдХреНрд▓реАрдирд░ рдмрдирд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рд╣реИрдВред

рд▓реЗрдЦ рдХреЗрд╡рд▓ рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓реЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐, рдХрдо рд╕реЗ рдХрдо рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрдИ рд▓рд╛рдЧреВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдХ рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реЛрддреЗ рд╣реИрдВ ред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


рдЬрдм рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ: рддреБрд▓рдирд╛, рдХреНрд░рдордмрджреНрдзрддрд╛, рдХреНрд░рдордмрджреНрдзрддрд╛ рд╕реЗ рдкрдврд╝рдирд╛, рдПрдХ рд╡рд░реНрдЧ рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд░рдирд╛, рд░реЗрдВрдбрд░ рдХрд░рдирд╛, рдпрд╣ рдПрдХ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЬрд╛рд╡рд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:

рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдпрд╛ рддреЛ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:

//  ,    def sort[T <: Comparable[T]](elements: Seq[T]): Seq[T] //   class Person(val id: Id[Person], val name: String) extends Comparable[Person] { def compareTo(Person anotherPerson): Int = { return this.name.compareTo(anotherPerson.name) } } //  sort(persons) 

рдпрд╣рд╛рдВ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЫрдВрдЯрд╛рдИ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддреБрд▓рдирд╛ рддрд░реНрдХ рдХрд╕рдХрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рдФрд░ рд╢рд╛рдпрдж рдХреЛрдИ рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ XML рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддреБрд▓рдирд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ - рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рдХрд▓ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ, рдФрд░ рд╣рдо рдирд┐рдЬреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рддреБрд▓рдирд┐рддреНрд░ рд╡рд░реНрдЧ рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 //  ,    def sort[T](elements: Seq[T], comparator: Comparator[T]): Seq[T] //   class Person(val id: Id[Person], val name: String) trait Comparator[T] { def compare(object1: T, object2 T): Int } class PersonNameComparator extends Comparator[Person] { def compare(onePerson: Person, anotherPerson: Person): Int = { return onePerson.name.compareTo(anotherPerson.name) } } //  val nameComparator = new PersonNameComparator() sort(persons, nameComparator) 

рдЕрдм рдЖрдк рдХрдИ рддреБрд▓рдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреБрд▓рдирд╛ рддрд░реНрдХ рдЕрдм рдореЙрдбрд▓ рд╡рд░реНрдЧ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддреБрд▓рдирд┐рддреНрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЫрдВрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХрдХреНрд╖рд╛ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЙрд▓ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдФрд░ рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╕рдорд╛рди рдкреНрд░рдмрдВрдзрди рдФрд░ рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рдЕрд░реНрде рд╣реИред рдФрд░ рдлрд┐рд░ рднреА рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЗрди рд╕рднреА рд╢рд╛рдВрдд рдирд╛рдореЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдФрд░ рдлрд┐рд░ рдЯрд╛рдЗрдк рдХреА рдХреНрд▓рд╛рд╕реЗрд╕ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдХрд╛рд▓рд╛ рдХреА рдХреНрд╖рдорддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╛рд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддреА рд╣реИред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВ, рд▓реЗрдХрд┐рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рд╣рдо рддреБрд▓рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:

 def sort[T](elements: Seq[T])(implicit comparator: Comparator[T]): Seq[T] 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЧреБрдВрдЬрд╛рдЗрд╢ рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рддреБрд▓рдирд┐рддреНрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдУрд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрдкрдпреБрдХреНрдд рддреБрд▓рдирд┐рддреНрд░ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд░рдЦреЗрдВ:

 implicit val personNameComparator = Comparator[Person] { def compare(onePerson: Person, anotherPerson: Person): Int = { return onePerson.name.compareTo(anotherPerson.name) } } 

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреАрд╡рд░реНрдб рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдм рдЫрдБрдЯрд╛рдИ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддреБрд▓рдиреАрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдерд╛:

 //   sort(persons) 

рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рддреБрд▓рдирд╛ рд╡рд┐рдзрд┐ рд╕реНрд╡рдпрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝реА рдирд╣реАрдВ рд╣реИред рд╣рдо рдХрд┐рд╕реА рднреА рддреБрд▓рдирд╛ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рддрдм рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдк рдкреИрд░рд╛рдореАрдЯрд░ рдЦреБрдж рдЯрд╛рдЗрдк рд╣реЛ рдЬрд╛рдПред рдЕрд░реНрдерд╛рддреН, рдореИрдк [Id [рд╡реНрдпрдХреНрддрд┐], рд╕реВрдЪреА [рдЕрдиреБрдорддрд┐]] рдХреЗ рд▓рд┐рдП рд╣рдо MapJsonSerializer , IdJsonSerializer , ListJsonSerializer рдФрд░ PermissionJsonSerializer рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рдЬрд┐рдирдХрд╛ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ PersonPimsMapJsonSerializer , рдПрдирд╛рд▓реЙрдЧреНрд╕ рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рд╣рд░ рдмрд╛рд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╣рд┐рдд рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ:

 implicit def ListComparator[V](implicit comparator: Comparator[V]) = new Comparator[List[V]] { def compare(oneList: List[V], anotherList: List[V]): Int = { for((one, another) <- oneList.zip(anotherList)) { val elementsCompared = comparator,compare(one, another) if(elementsCompared > 0) return 1 else if(elementsCompared < 0) return -1 } return 0 } } 

рд╡рд╣ рдкреВрд░реА рд╡рд┐рдзрд┐ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ JSONParsers, XMLSerializers рдХреЛ рдПрдХ рд╕рд╛рде PersonFactory рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдмрд┐рдирд╛ - рд╕реНрдХрд╛рд▓рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛ред

рдЯреАрд╕реАрдПрд╕ рдореЗрдВ, рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдПред рдЯрд╛рдЗрдк рдХрдХреНрд╖рд╛рдПрдВ рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдлреЗрдВрдХреЗ рдЧрдП рдмреНрд▓реЙрдХ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдкрд╡рд╛рдж рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╣рд╛рде рд╕реЗ рдлреЗрдВрдХрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдЕрдм рд╕рдм рдХреБрдЫ рд╕реБрдВрджрд░ рд╣реИред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЯрд╛рдЗрдк рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╖рдп рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╕реНрдХреИрд▓рд╛ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдЯрд╛рдЗрдкрдХрд╛рд▓реЗрдЬрд╝ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореБрджреНрджрд╛ рдФрд░ рднреА рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In147759/


All Articles