List 列表列表到HashMap[列表索引]->;列表-Scala
我在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),)
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
转换的编辑