Если вы используете 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
:
Буферы используются для последовательного создания последовательностей элементов
Поскольку вы используете его с Actor
s, его можно использовать для какой-то очереди актеров - в этом случае вы можете захотеть взглянуть на коллекцию Queue
.
Надеюсь, это поможет,
- Flaviu Cipcigan