2016-02-24 6 views
2

У меня есть SortedSet, и мне нужно его преобразовать в Seq при сохранении заказа (потому что мне нужно позвонить map с выходом seq).СортировкаУдаление заказа (отсортировано)

Пара тестов в REPL показывает, что toSeq сохранить заказ, а также toIndexedSeq, но я должен быть уверен: гарантировано сохранить заказ?

В противном случае я могу использовать .toSeq.sorted, но это серьезно излишеством ...

ответ

5

функции, такие как toSeq реализуется путем создания новой коллекции (для toSeq это изменяемые Buffer) и добавлены элементы в порядке итераций оригинальная коллекция (SortedSet). Это означает, что результирующая последовательность всегда будет упорядочена.

+1

Действительно, реализация сохраняет порядок (в основном код '{this.foreach (buffer + = _); buffer}'. И 'SortedSet.foreach' и' Buffer + = 'сохраняют порядок. предпочитают, если бы это было гарантировано API, хотя –