[英]How to generate the random values of map from a given set of values and then store the key and values into separate variables in scala
我正在尝试从 Scala 中给定的(静态定义的)2 个映射键值对生成 1000 个随机键值映射对,后来我想打破键值对并将它们存储到单独的变量中
无论我尝试过什么:
object methodTest extends App{
val testMap = Map("3875835"->"ABCDE","316067107"->"EFGHI")
def getRandomElement(seq: Map[String,String]): Map[String,String] = {
seq(Random.nextInt(seq.length))
}
var outList = List.empty[Map[String,String]]
for(i<-0 to 1000){
outList+=getRandomElement(testMap)
}
print(outList)
}
输出应生成 1000 个键值对映射,如下所示
[3875835,ABCDE]
[316067107,EFGHI]
[3875835,ABCDE]
[316067107,EFGHI]
[316067107,EFGHI]
............
............
............. upto 1000 random key-val pairs
请帮我找出我出错的地方,并让我知道如何解决它,如果有关于要求的任何问题,请随时发表评论
您可以使用.toSeq
将您的种子映射testMap
转换为键/值元组序列,然后通过迭代从 0 到 1000 的数字列表来生成键/值对,将每个数字与第一个或第二个元素之间的随机选择相关联种子:
import scala.util.Random
val testMap = Map("3875835" -> "ABCDE", "316067107" -> "EFGHI")
val seed = testMap.toSeq
val keyValuesList = (0 until 1000).map(index => seed(Random.nextInt(seed.size)))
注意: 0 until 1000
将返回从 0 到 1000 的所有数字,但不包括 1000 个数字。 如果您使用0 to 1000
您将获得0 to 1000
所有数字,因此是 1001 个数字。
如果要打印结果列表,可以使用.foreach
方法和println
函数作为参数:
keyValuesList.foreach(println)
你会得到:
(3875835,ABCDE)
(316067107,EFGHI)
(3875835,ABCDE)
(3875835,ABCDE)
(316067107,EFGHI)
(3875835,ABCDE)
...
如果你只想保留键,你可以使用.map
方法迭代列表,使用._1
方法只取元组的第一个元素,检索元组的第一个元素:
val keys = keyValuesList.map(keyValuePair => keyValuePair._1)
如果你只想要一个包含每对的所有第二个元素的列表:
val values = keyValuesList.map(keyValuePair => keyValuePair._2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.