List 列表列表到HashMap[列表索引]->;列表-Scala

List 列表列表到HashMap[列表索引]->;列表-Scala,list,scala,hashmap,List,Scala,Hashmap,我在Scala中有一个列表,看起来像这样:List(List(1,5,6,10)、List(1,6)、List(1,3,10),我要转换 它被转换成一个HashMap[Int,List[Int]],其中第一个Int是每个列表的索引,List[Int]是列表本身 像 HashMap[Int, List[Int]]( 0 -> List(1, 5, 6, 10), 1 -> List(1, 6), 2 -> List (1, 3, 10),)

我在Scala中有一个列表,看起来像这样:
List(List(1,5,6,10)、List(1,6)、List(1,3,10)
,我要转换 它被转换成一个
HashMap[Int,List[Int]]
,其中第一个Int是每个列表的索引,
List[Int]
是列表本身 像

 HashMap[Int, List[Int]](
      0 -> List(1, 5, 6, 10),
      1 -> List(1, 6),
      2 -> List (1, 3, 10),)
下面是我的方法,将列表
0
压缩到列表的长度,并用这个嵌套列表压缩,然后
将其转换为HashMap。但我正在寻找更惯用或更简洁的内容。有什么想法吗?

带有
映射的zipWithIndex
应该可以:

scala> val a = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))
a: List[List[Int]] = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))

scala> a.zipWithIndex.map(_.swap).toMap
res0: scala.collection.immutable.Map[Int,List[Int]] = 
Map(
    0 -> List(1, 5, 6, 10),
    1 -> List(1, 6), 
    2 -> List(1, 3, 10)
)
编辑:

如果您确实需要一个
HashMap
,那么事情就有点混乱了:

scala> val a = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))
a: List[List[Int]] = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))

scala> val b = a.zipWithIndex.map(_.swap)
b: List[(Int, List[Int])] = List((0,List(1, 5, 6, 10)), (1,List(1, 6)), (2,List(1, 3, 10)))

scala> val hM = collection.immutable.HashMap[Int, List[Int]](b: _*)
hM: scala.collection.immutable.HashMap[Int,List[Int]] = 
Map(
    0 -> List(1, 5, 6, 10),
    1 -> List(1, 6),
    2 -> List(1, 3, 10)
)

带有
map
zipWithIndex
应该可以:

scala> val a = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))
a: List[List[Int]] = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))

scala> a.zipWithIndex.map(_.swap).toMap
res0: scala.collection.immutable.Map[Int,List[Int]] = 
Map(
    0 -> List(1, 5, 6, 10),
    1 -> List(1, 6), 
    2 -> List(1, 3, 10)
)
编辑:

如果您确实需要一个
HashMap
,那么事情就有点混乱了:

scala> val a = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))
a: List[List[Int]] = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))

scala> val b = a.zipWithIndex.map(_.swap)
b: List[(Int, List[Int])] = List((0,List(1, 5, 6, 10)), (1,List(1, 6)), (2,List(1, 3, 10)))

scala> val hM = collection.immutable.HashMap[Int, List[Int]](b: _*)
hM: scala.collection.immutable.HashMap[Int,List[Int]] = 
Map(
    0 -> List(1, 5, 6, 10),
    1 -> List(1, 6),
    2 -> List(1, 3, 10)
)

使用
.swap
而不是
x=>(x.\u2,x.\u1)
添加,我必须记住!非常好。有没有办法将其转换为哈希映射而不是映射。我的函数是HashMap[Int,List[Int]],actual:Map[Int,List[Int]]@TeodoricoLevoff查看我对
HashMap
conversionuse
.swap
的编辑,而不是
x=>(x.\u 2,x.\u 1)
添加,我必须记住!非常好。有没有办法将其转换为HashMap而不是Map。我的函数是HashMap[Int,List[Int]],实际:Map[Int,List[Int]]@TeodoricoLevoff查看我对
HashMap
转换的编辑