创建案例列表 class 个实例
Create list of case class instances
我有 3 个值,每个类型都是 Array[String]
它们的长度都相等
val1.length == val2.length // 真
接下来,我创建了一个案例class如下:
case class resource(name: String, count: Int, location: String)
我想创建一个列表,一个 List[resource]
,这样这个列表的每个对象都是从 val
的相应元素创建的,即 val1
、val2
, val3
像这样:
val newList: List[resource] = (val1(0), val2(0).toInt, val3(0)),
(val1(1), val2(1).toInt, val3(1)),
...
(val1(val1.length), val2(val2.length).toInt, val3(val3.length)
我不确定如何进行。我是使用 flatMap、foreach、for 循环还是其他东西?
想法是创建上述 newList
并将其与使用 doobie 从 SQL 数据库获得的结果进行比较。
val comparator = sql"sql statment".query[resource]
comparator.to[List].transact(xa).unsafeRunSync()
您可以压缩您的数组,它将压缩序列的相应元素组合成元组,并且它们 map
在组合序列上使用 resource.apply
方法:
val val1: Array[String] = Array("name 1", "name 2", "name 3")
val val2: Array[String] = Array("1", "2", "3")
val val3: Array[String] = Array("loc 1", "loc 2", "loc 3")
scala> (val1, val2.map(_.toInt), val3).zipped.map(resource)
res1: Array[resource] = Array(resource(name 1,1,loc 1), resource(name 2,2,loc 2), resource(name 3,3,loc 3))
然后,如果需要,您可以将此 Array
转换为 List
:
scala> (val1, val2.map(_.toInt), val3).zipped.map(resource).toList
res2: List[resource] = List(resource(name 1,1,loc 1), resource(name 2,2,loc 2), resource(name 3,3,loc 3))
假设您有 3 个列表,例如
案例class资源(名称:字符串,计数:Int,位置:字符串)
val list1 = Array("s1","s2","s3")
val list2 = Array("1","2","3")
val list3 = Array("s4","s5","s6")
您可以简单地使用 for 循环来获取所需的资源列表
val result = for(
l1 <- list1;
l2 <- list2;
l3 <- list3
)
yield (resource(l1,l2.toInt,l3) )
注意:- 此代码仅在第二个列表包含整数列表时才有效,否则我们将得到 NumberFormatException。
我有 3 个值,每个类型都是 Array[String]
它们的长度都相等
val1.length == val2.length // 真
接下来,我创建了一个案例class如下:
case class resource(name: String, count: Int, location: String)
我想创建一个列表,一个 List[resource]
,这样这个列表的每个对象都是从 val
的相应元素创建的,即 val1
、val2
, val3
像这样:
val newList: List[resource] = (val1(0), val2(0).toInt, val3(0)),
(val1(1), val2(1).toInt, val3(1)),
...
(val1(val1.length), val2(val2.length).toInt, val3(val3.length)
我不确定如何进行。我是使用 flatMap、foreach、for 循环还是其他东西?
想法是创建上述 newList
并将其与使用 doobie 从 SQL 数据库获得的结果进行比较。
val comparator = sql"sql statment".query[resource]
comparator.to[List].transact(xa).unsafeRunSync()
您可以压缩您的数组,它将压缩序列的相应元素组合成元组,并且它们 map
在组合序列上使用 resource.apply
方法:
val val1: Array[String] = Array("name 1", "name 2", "name 3")
val val2: Array[String] = Array("1", "2", "3")
val val3: Array[String] = Array("loc 1", "loc 2", "loc 3")
scala> (val1, val2.map(_.toInt), val3).zipped.map(resource)
res1: Array[resource] = Array(resource(name 1,1,loc 1), resource(name 2,2,loc 2), resource(name 3,3,loc 3))
然后,如果需要,您可以将此 Array
转换为 List
:
scala> (val1, val2.map(_.toInt), val3).zipped.map(resource).toList
res2: List[resource] = List(resource(name 1,1,loc 1), resource(name 2,2,loc 2), resource(name 3,3,loc 3))
假设您有 3 个列表,例如
案例class资源(名称:字符串,计数:Int,位置:字符串)
val list1 = Array("s1","s2","s3")
val list2 = Array("1","2","3")
val list3 = Array("s4","s5","s6")
您可以简单地使用 for 循环来获取所需的资源列表
val result = for(
l1 <- list1;
l2 <- list2;
l3 <- list3
)
yield (resource(l1,l2.toInt,l3) )
注意:- 此代码仅在第二个列表包含整数列表时才有效,否则我们将得到 NumberFormatException。