gpt4 book ai didi

arrays - 在 Scala 中对 ArrayBuffer[A] 进行排序?

转载 作者:行者123 更新时间:2023-12-01 22:47:19 27 4
gpt4 key购买 nike

我在 Scala 中有一个数组,类为 ArrayBuffer[Actor] ,其中 Actor是一个实现 Ordered[Actor] 的类特征。如何在不手动编码的情况下对这个数组进行排序?

我知道有一个对象叫 Sorting ,但它似乎不起作用,因为 ArrayBuffer没有实现/扩展正确的类。

如何排序 ArrayBuffer[A]类型数组?

最佳答案

如果你使用 Scala 2.8,你可以使用 sortWith ArrayBuffer[T]的方法类,继承自 SeqLike特征。

以下代码片段对 ArrayBuffer[T] 进行排序按升序排列的对象:

def ascendingSort[T <% Ordered[T]](xs: ArrayBuffer[T]) = xs.sortWith(_ < _)

请注意,这不会改变实际的 ArrayBuffer ,但会以正确的顺序创建一个新的元素。

如果你使用 Scala 2.7,你可以使用 stableSort Sorting的方法目的。这需要 ArrayBuffer 的元素并生成按正确顺序排序的元素数组(由闭包作为参数给出,默认为升序)。

例如:
val a = new scala.collection.mutable.ArrayBuffer[Int]()
a += 5
a += 2
a += 3

scala.util.Sorting.stableSort(a)

重要的问题是你想用 ArrayBuffer 做什么? .通常,一个 Buffer在不同的算法内部使用,以提高中间结果的性能。如果您为此使用它,请查看在算法结束时对要返回的集合进行排序的方法。 Sorting对象已经提供了一种转换 ArrayBuffer 的方法。成一个排序 Array .

来自 Buffer 的 scaladoc类(class):

Buffers are used to create sequences of elements incrementally



当您与 Actor 一起使用时s,它可能用于某种角色队列 - 在这种情况下,您可能需要查看 Queue收藏。

希望能帮助到你,

——弗拉维乌·西皮根

关于arrays - 在 Scala 中对 ArrayBuffer[A] 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com