0

我有一个关于在 Scala 中使用 ArrayBuffer 的简单问题

    class NewArray[A <% OtherClass with Ordered[A]] (arrb: ArrayBuffer[Long]) {
        val arrBuffer: ArrayBuffer[Long] = arrb

        def +(n : Long) {
        if(!this.isMember(n))
          arrBuffer += n
        }
        ...
    }

NewArray 封装了一个 ArrayBuffer 类型的 arrBuffer。对 NewArray 执行的新操作本质上是基于 ArrayBuffer。

NewArray 是否已排序?如何做一个排序数组?

4

2 回答 2

3

显然缺少很多代码,但ArrayBuffer没有对添加到其中的内容进行排序,也没有提供就地排序。如果您需要在每次插入后保持排序,则可以使用树,但 Scala 不提供可变树。用作java.util.TreeSet您的内部代表。

可能有比这更好的选择,但从你所说的很难判断。

如果您询问添加[A <% OtherClass with Ordered[A]]是否会使您的Long数组排序,不,根本不会。这只是说,当您创建一个新数组时,您最好能够考虑一些可排序的类。但是,如果您不使用该类,那么了解它就毫无用处!

于 2013-05-22T16:32:27.717 回答
1

如果您包装As 的 ArrayBuffer(不确定您在用Longs​​ 做什么),那么您将能够使用arrb.sorted.

于 2013-05-22T16:09:02.507 回答