按条件集对scala列表的元素进行排序

Bal*_*m26 1 sorting scala vector

我有一个Scala的对象列表,需要根据两个条件进行排序.我已经尝试使用sortBy方法对元素列表进行排序,提到两个feidls,但排序顺序并不像我预期的那样.

TestObject(name:String,size:Int,length:Double)
val tesList = Vector[TestObject]()
Run Code Online (Sandbox Code Playgroud)

我想根据以下内容对列表进行排序 -

bigger SIZE & bigger LENGTH
Run Code Online (Sandbox Code Playgroud)

我试过了-

tesList.sortBy(p=>(p.size,p.length))
Run Code Online (Sandbox Code Playgroud)

我想对列表中具有最大长度和最大尺寸的元素进行排序.

moh*_*hit 7

使用SortWith.

您将需要定义一个排序函数,该函数将用于SortWith确定一个对象是否大于另一个对象.根据功能,将完成排序.


case class TestObject(name:String,size:Int,length:Double)
 val tesList = Vector[TestObject](TestObject("a",4,4), TestObject("a",4,5), TestObject("a",2,5))
//> tesList  : scala.collection.immutable.Vector[TestObject]
//|  = Vector(TestObject(a,4,4.0), TestObject(a,4,5.0), TestObject(a,2,5.0))
// f and s stands for first object and second object
 tesList.sortWith((f,s) => f.size > s.size && f.length > s.length)
 //> res0: scala.collection.immutable.Vector[TestObject] = Vector(TestObject(a,4,4.0), TestObject(a,4,5.0), TestObject(a,2,5.0))