数组 – 在scala中排序ArrayBuffer [A]?
我在
Scala中有一个数组ArrayBuffer [Actor],其中Actor是一个实现Ordered [Actor]特征的类.如何在不编码的情况下对此数组进行排序?
我知道有一个名为Sorting的对象,但它似乎没有用,因为ArrayBuffer没有实现/扩展正确的类. 如何对ArrayBuffer [A]类型数组进行排序? 解决方法
如果您使用的是Scala 2.8,则可以使用ArrayBuffer [T]类的sortWith方法,该方法继承自SeqLike特性.
以下代码段按升序对ArrayBuffer [T]对象进行排序: def ascendingSort[T <% Ordered[T]](xs: ArrayBuffer[T]) = xs.sortWith(_ < _) 请注意,这不会改变实际的ArrayBuffer,而是创建一个新元素,其元素的顺序正确. 如果您使用的是Scala 2.7,则可以使用Sorting对象的stableSort方法.这将获取ArrayBuffer的元素并生成以正确顺序排序的元素数组(由闭包作为参数给出,默认为升序). 例如: val a = new scala.collection.mutable.ArrayBuffer[Int]() a += 5 a += 2 a += 3 scala.util.Sorting.stableSort(a) 重要的问题是你想用ArrayBuffer做什么.通常,缓冲区在内部用于不同的算法,以提高中间结果的性能.如果您正在使用它,请查看在算法结束时对要返回的集合进行排序的方法. Sorting对象已经提供了一种将ArrayBuffer转换为已排序数组的方法. 从Buffer类的scaladoc:
当您将它与Actors一起使用时,它可能会用于某种类型的actor队列 – 在这种情况下,您可能希望查看Queue集合. 希望能帮助到你, – Flaviu Cipcigan (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何使用Scalatest在Scala中开发编译器插件
- 1.4、Bootstrap V4自学之路------起步---自定义选项
- angularjs – jsHint投掷’Firebase’未定义警告
- scala – 选项上的折叠有什么关系,等等,并折叠到可移动?
- HDU 5923 Prediction [可持久化并查集]【数据结构】
- 1.Bootstrap简介
- IO系列文章3:Unix中的IO模型:帮你弄清阻塞VS非阻塞、同步
- 经验积累:SoapUI的使用相关--动态取得的Soap Message内容,
- angularjs – 模拟Angular和Jasmine中所有套件的全局HTTP请
- 很漂亮的bootstrap ace静态页面后台管理系统模板