如何通过将操作应用于scala映射的所有元素来创建列表?
我有一个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
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的
谢谢!正是我要找的!正是我要找的!正是我要找的!正是我要找的!正是我要找的