2017-01-18 8 views
3

У меня есть список типов List(String,String), и я хотел его преобразовать в карту. Когда я использовал метод toMap, я обнаружил, что он не сохраняет порядок данных, которые есть в списке. Однако моя цель состоит в том, чтобы преобразовать список в Map, сохранив порядок данных, аналогичный списку. Я узнал, что ListMap сохраняет порядок вставки (но он неизменен), поэтому я могу использовать LinkedHashMap с функцией отображения, чтобы вставлять данные последовательно в LinkedHashMap, но это означает, что мне нужно перебирать все элементы, которые являются болью. Может ли кто-нибудь предложить мне лучший подход? БлагодаряКак преобразовать List (String, String) в ListMap [String, String]?

+0

«моя цель состоит в том, чтобы преобразовать список к карте, сохраняя порядок данных такой же, как из списка». Карты не работают так –

+0

«Я узнал, что ListMap сохраняет порядок вставки» Как вы узнали об этом? В документации нет ничего. –

+0

Я узнал из этого сообщения http://stackoverflow.com/questions/3835743/scala-map-implementation-keeping-entries-in-insertion-order – Explorer

ответ

6

Это должно сделать это:

val listMap = ListMap(list : _*) 
+0

Спасибо @ C4stor за ваш комментарий, это сработало. Я новичок в scala, и небольшое объяснение аннотации поможет многому понять глубину. – Explorer

+1

[ListMap # apply] (http://www.scala-lang.org/api/2.11.8/index.html#[email protected] [A, B] (elems: (A, B) *): CC [A, B]) принимает двоичные значения. Вызывая ': _ *', элементы списка применяются в varargs, как я понимаю. Возможно, это поможет [hist] (https://gist.github.com/kevinmeredith/b4b3e35bf7bfadce253a8d74aef1c7ef). См. Также http://stackoverflow.com/questions/1008783/using-varargs-from-scala для получения дополнительной информации. –

+1

@ KevinMeredith понял это правильно. Я думаю, что более релевантный вопрос для понимания: _ * http://stackoverflow.com/questions/6051302/what-does-colon-underscore-star-do-in-scala, которые, надеюсь, всю необходимую вам информацию :) – C4stor

Смежные вопросы