Почему метод toSet смешивает порядок элементов в ListBuffer? - PullRequest
3 голосов
/ 19 сентября 2011

Почему в scala метод toSet() смешивает порядок элементов в коллекции (ListBuffer)?

Какую коллекцию я могу использовать для обеспечения уникальности каждого элемента и сохранения их первоначального порядка?

1 Ответ

11 голосов
/ 19 сентября 2011

Поскольку абстракция set , являющаяся подклассом traversable , не имеет никаких гарантий относительно порядка элементов, содержащихся в:

A traversable class might or might not have two properties: strictness and orderedness. Neither is represented as a type.
 ...
 If the class is not ordered, foreach can visit elements in different orders for different runs (but it will keep the same order in the same run).'

Подробнее опочему элементы «искажены»: метод toSet создает новую коллекцию наборов из некоторой существующей коллекции.Он использует реализацию набора по умолчанию для этой новой коллекции наборов.Реализация набора по умолчанию основана на хеш-таблице.В хеш-таблице порядок элементов не определен.

...