If you are using Scala 2.8, you could use the sortWith
method of the ArrayBuffer[T]
class, which is inherited from the SeqLike
trait.
The following code snippet sorts an ArrayBuffer[T]
object in ascending order:
def ascendingSort[T <% Ordered[T]](xs: ArrayBuffer[T]) = xs.sortWith(_ < _)
Note that this does not mutate the actual ArrayBuffer
, but creates a new one with the elements in the right order.
If you are using Scala 2.7, you could use the stableSort
method of the Sorting
object. This takes the elements of the ArrayBuffer
and produces an array of elements sorted in the right order (given by a closure as an argument, ascending as a default).
For example:
val a = new scala.collection.mutable.ArrayBuffer[Int]()
a += 5
a += 2
a += 3
scala.util.Sorting.stableSort(a)
The important question is what do you want to do with the ArrayBuffer
. Usually, a Buffer
is used internally in different algorithms in order to increase the performance of intermediate results. If you are using it for that, have a look at the ways of sorting the collection you want to return at the end of your algorithm. The Sorting
object already provides a way of transforming an ArrayBuffer
into a sorted Array
.
From the scaladoc of the Buffer
class:
Buffers are used to create sequences of elements incrementally
As you are using it with Actor
s, it might be used for some kind of actor queue - in which case, you might want to have a look at the Queue
collection.
Hope it helps,
-- Flaviu Cipcigan