2017-01-18 146 views
3

我有一个List(String,String)类型的列表,我想将其转换为地图。当我使用toMap方法时,我发现它不保留List中数据的顺序。不过,我的目标是通过保持数据的顺序与List相同的顺序将列表转换为Map。我了解到ListMap保留了插入顺序(但它是不可变的),所以我可以使用LinkedHashMap和map函数将数据顺序插入到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])接受元组可变参数。据我所知,通过调用':_ *',列表元素以可变参数化方式应用。也许这[gist](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

相关问题