Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过将操作应用于scala映射的所有元素来创建列表?_Scala - Fatal编程技术网

如何通过将操作应用于scala映射的所有元素来创建列表?

如何通过将操作应用于scala映射的所有元素来创建列表?,scala,Scala,我有一个scala映射myMap,我想创建一个成对的列表MyList,如下所示: 对于myMap中的每个(k,v),MyList都应该有元组(v.someMember,k)作为元素 使用map和进行理解的结果是一个新的map。有没有更好的方法来实现这一点,而不是从一个空列表开始,在我循环映射中的(键,值)对时添加元素 var myList = List.empty[(Double, String)] myMap foreach { case(k,v) => myList ::= (v.so

我有一个scala映射
myMap
,我想创建一个成对的列表
MyList
,如下所示:

对于myMap中的每个(k,v),MyList都应该有元组(v.someMember,k)作为元素

使用
map
进行理解的结果是一个新的map。有没有更好的方法来实现这一点,而不是从一个空列表开始,在我循环映射中的(键,值)对时添加元素

var myList = List.empty[(Double, String)]
myMap foreach { case(k,v) => myList ::= (v.someMember, k) }

使用
toList
,然后使用
map

例如:

scala> Map("a" -> 1, "b" -> 2).toList.map { case (k, v) => (k.size, v) }
res12: List[(Int, Int)] = List((1,1), (1,2))
或者,如果您想提高内存效率,并且不分配中间列表,您可以在使用
breakOut

import scala.collection.breakOut

scala> val l: List[(Int, Int)] = Map("a" -> 1, "b" -> 2).map({ case (k, v) => (k.size, v) })(breakOut)
l: List[(Int, Int)] = List((1,1), (1,2))

使用
toList
,然后使用
map

例如:

scala> Map("a" -> 1, "b" -> 2).toList.map { case (k, v) => (k.size, v) }
res12: List[(Int, Int)] = List((1,1), (1,2))
或者,如果您想提高内存效率,并且不分配中间列表,您可以在使用
breakOut

import scala.collection.breakOut

scala> val l: List[(Int, Int)] = Map("a" -> 1, "b" -> 2).map({ case (k, v) => (k.size, v) })(breakOut)
l: List[(Int, Int)] = List((1,1), (1,2))

使用
toList
,然后使用
map

例如:

scala> Map("a" -> 1, "b" -> 2).toList.map { case (k, v) => (k.size, v) }
res12: List[(Int, Int)] = List((1,1), (1,2))
或者,如果您想提高内存效率,并且不分配中间列表,您可以在使用
breakOut

import scala.collection.breakOut

scala> val l: List[(Int, Int)] = Map("a" -> 1, "b" -> 2).map({ case (k, v) => (k.size, v) })(breakOut)
l: List[(Int, Int)] = List((1,1), (1,2))

使用
toList
,然后使用
map

例如:

scala> Map("a" -> 1, "b" -> 2).toList.map { case (k, v) => (k.size, v) }
res12: List[(Int, Int)] = List((1,1), (1,2))
或者,如果您想提高内存效率,并且不分配中间列表,您可以在使用
breakOut

import scala.collection.breakOut

scala> val l: List[(Int, Int)] = Map("a" -> 1, "b" -> 2).map({ case (k, v) => (k.size, v) })(breakOut)
l: List[(Int, Int)] = List((1,1), (1,2))

在理解语法时也要考虑这一点(这里的语义等同于前面提到的
map
);比如

val myMap = Map (1.1 -> "abc" , 2.2 -> "xyz")

for ( (k,v) <- myMap.toList ) yield v(2) -> k
val myMap=Map(1.1->“abc”,2.2->“xyz”)
对于((k,v)k
在问题陈述之后

for ( (k,v) <- myMap.toList ) yield v.someMember -> k
((k,v)k的
在理解语法时也要考虑这一点(此处语义等同于前面建议的
映射);例如

val myMap = Map (1.1 -> "abc" , 2.2 -> "xyz")

for ( (k,v) <- myMap.toList ) yield v(2) -> k
val myMap=Map(1.1->“abc”,2.2->“xyz”)
对于((k,v)k
在问题陈述之后

for ( (k,v) <- myMap.toList ) yield v.someMember -> k
((k,v)k的
在理解语法时也要考虑这一点(此处语义等同于前面建议的
映射);例如

val myMap = Map (1.1 -> "abc" , 2.2 -> "xyz")

for ( (k,v) <- myMap.toList ) yield v(2) -> k
val myMap=Map(1.1->“abc”,2.2->“xyz”)
对于((k,v)k
在问题陈述之后

for ( (k,v) <- myMap.toList ) yield v.someMember -> k
((k,v)k的
在理解语法时也要考虑这一点(此处语义等同于前面建议的
映射);例如

val myMap = Map (1.1 -> "abc" , 2.2 -> "xyz")

for ( (k,v) <- myMap.toList ) yield v(2) -> k
val myMap=Map(1.1->“abc”,2.2->“xyz”)
对于((k,v)k
在问题陈述之后

for ( (k,v) <- myMap.toList ) yield v.someMember -> k
((k,v)k的


谢谢!正是我要找的!正是我要找的!正是我要找的!正是我要找的!正是我要找的