2015-06-26 3 views
-3

Мне нужно получить ключи от карты в том порядке, в котором они были добавлены. но кажется, что map.keys возвращают массив с повторно заказанными ключами.порядок ключей на карте scala

как сохранить порядок ключа/значений по мере их добавления при их получении?

Благодаря

+0

Посмотрите на [этот вопрос] (http://stackoverflow.com/questions/9313866/immutable-scala-map-implementation-that-preserves-insertion-order) – mziccard

+0

Возможный дубликат [Сохранение записей реализации Scala Map в порядке размещения?] (http://stackoverflow.com/questions/3835743/scala-map-implementation-keeping-entries-in-insertion-order) –

ответ

0

Карты реализованы с использованием деревьев не хранят свои ключи в порядке, что они вставлены. Эта информация теряется, когда она вставлена ​​по значению (на основе ее Comparable) и далее «рандомизирована», когда дерево сбалансировано.

Как указал @mziccard, линейные структуры (такие как LinkedHashMap) могут сохранять порядок вставки, так что это путь, если вам нужна такая возможность.

+1

В Scala у вас есть изменяемая карта (LinkedHashMap) и неизменяемая (LinkedMap), которые позволяют сохранить порядок вставки. Также Java имеет свой LinkedHashMap, сохраняющий порядок вставки и способный также отслеживать порядок доступа, если это необходимо. – mziccard

+0

Мой плохой. Я конкретно думал о реализации BST. Я исправлю это и расскажу вам. – Carcigenicate