加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

数组 – 在scala中排序ArrayBuffer [A]?

发布时间:2020-12-16 18:13:56 所属栏目:安全 来源:网络整理
导读:我在 Scala中有一个数组ArrayBuffer [Actor],其中Actor是一个实现Ordered [Actor]特征的类.如何在不编码的情况下对此数组进行排序? 我知道有一个名为Sorting的对象,但它似乎没有用,因为ArrayBuffer没有实现/扩展正确的类. 如何对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:

Buffers are used to create sequences of elements incrementally

当您将它与Actors一起使用时,它可能会用于某种类型的actor队列 – 在这种情况下,您可能希望查看Queue集合.

希望能帮助到你,

– Flaviu Cipcigan

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读