这是否使ArrayBuffer排序?

时间:2013-05-22 15:45:59

标签: scala

我有一个关于在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是否排序?如何进行排序数组?

2 个答案:

答案 0 :(得分:3)

显然有很多代码丢失,但ArrayBuffer不会对添加的内容进行排序,也不提供就地排序。如果你需要在每次插入后保持排序,那么树就是可行的方法,但Scala不提供可变树。使用java.util.TreeSet作为内部代表。

可能有比这更好的选择,但很难说出你说的是什么。

如果您询问是否添加[A <% OtherClass with Ordered[A]]会使您的Long数组排序,不会,根本不排序。这只是说你在创建一个新数组时最好能够想到一些可订购的类。但是如果你不使用那个类,那就知道它什么都没做!

答案 1 :(得分:1)

如果要包装A的ArrayBuffer(不确定您使用Long执行了什么操作),那么您将能够使用arrb.sorted对缓冲区进行排序。< / p>