scala的sortby函数
时间: 2023-08-30 09:06:39 浏览: 276
scala的偏函数
`sortBy`是Scala中的一个高阶函数,它可以对集合中的元素按照指定的规则进行排序。与`sorted`函数不同的是,`sortBy`允许我们自定义排序规则,而不是使用默认的升序排序。
`sortBy`的函数签名如下:
```scala
def sortBy[B](f: A => B)(implicit ord: Ordering[B]): Repr
```
其中,`f`是一个函数,用于将集合中的元素映射为一个可以进行排序的值,`ord`是一个隐式参数,用于指定排序规则。`sortBy`函数返回一个新的集合,其中包含按照指定规则排序后的元素。
示例代码如下:
```scala
case class Person(name: String, age: Int)
val people = Seq(Person("Alice", 25), Person("Bob", 30), Person("Charlie", 20))
val sortedPeople = people.sortBy(_.age)
println(sortedPeople) // 输出:List(Person(Charlie,20), Person(Alice,25), Person(Bob,30))
```
在上面的示例中,我们创建了一个`Person`类,表示一个人的姓名和年龄。然后,我们创建了一个包含3个`Person`对象的`Seq`,并使用`sortBy`函数按照年龄对它们进行排序。最后,我们将排序后的结果输出到控制台。
需要注意的是,`sortBy`函数会返回一个新的集合,而不会修改原有集合。如果需要对原有集合进行排序,可以使用`sorted`函数。此外,如果自定义排序规则较为复杂,可以使用`Ordering`类来实现。
阅读全文