我有一个关于在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是否排序?如何进行排序数组?
答案 0 :(得分:3)
显然有很多代码丢失,但ArrayBuffer
不会对添加的内容进行排序,也不提供就地排序。如果你需要在每次插入后保持排序,那么树就是可行的方法,但Scala不提供可变树。使用java.util.TreeSet
作为内部代表。
可能有比这更好的选择,但很难说出你说的是什么。
如果您询问是否添加[A <% OtherClass with Ordered[A]]
会使您的Long
数组排序,不会,根本不排序。这只是说你在创建一个新数组时最好能够想到一些可订购的类。但是如果你不使用那个类,那就知道它什么都没做!
答案 1 :(得分:1)
如果要包装A
的ArrayBuffer(不确定您使用Long
执行了什么操作),那么您将能够使用arrb.sorted
对缓冲区进行排序。< / p>