Scala排序清单
示例
假设以下列表,我们可以采用多种方式进行排序。
val names = List("Kathryn", "Allie", "Beth", "Serin", "Alana")
的默认行为sorted()是使用math.Ordering,它对字符串进行字典排序:
names.sorted //结果显示在:列表(Alana,Allie,Beth,Kathryn,Serin)
sortWith允许您使用比较功能提供自己的订购:
names.sortWith(_.length < _.length) //结果显示在:列表(Beth,Allie,Serin,Alana,Kathryn)
sortBy允许您提供转换功能:
//一组元音要使用 val vowels = Set('a', 'e', 'i', 'o', 'u') //计算名称中元音的功能 def countVowels(name: String) = name.count(l => vowels.contains(l.toLower)) //按元音数量排序 names.sortBy(countVowels) //结果是:列表(Kathryn,Beth,Serin,Allie,Alana)
您始终可以使用`reverse来反转列表或排序列表:
names.sorted.reverse //结果:列表(Serin,Kathryn,Beth,Allie,Alana)
列表也可以使用Java方法java.util.Arrays.sort及其Scala包装器进行排序scala.util.Sorting.quickSort
java.util.Arrays.sort(data) scala.util.Sorting.quickSort(data)
如果可以避免集合转换和拆箱/装箱,则这些方法可以在对较大的集合进行排序时提高性能。有关性能差异的更详细讨论,请阅读有关ScalaCollectionsorted,sortWith和sortByPerformance的信息。