如何在Scala中将List[List[Long]]
转换为List[List[Int]]
最好的方式是什么?
例如,给定以下类型为List[List[Long]]
的列表:
val l: List[List[Long]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
如何将其转换为List[List[Int]]
?
如何在Scala中将List[List[Long]]
转换为List[List[Int]]
最好的方式是什么?
例如,给定以下类型为List[List[Long]]
的列表:
val l: List[List[Long]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
如何将其转换为List[List[Int]]
?
cats
库进行操作,并组合List
函数子。import cats.Functor
import cats.implicits._
import cats.data._
val l: List[List[Long]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
Functor[List].compose[List].map(l)(_.toInt)
//or
Nested(l).map(_.toInt).value
还有一种纯Scala方法(虽然不太安全)
val res:List[List[Int]] = l.asInstanceOf[List[List[Int]]]
尝试这样使用 l.map(_.map(_.toInt))
val l: List[List[Long]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
l.map(_.map(_.toInt))
这应该会提供
res2: List[List[Int]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
只有当你完全确定不会溢出Int时,才能这样做。
val l1: List[List[Long]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
val l2: List[List[Int]] = l1.map(list => list.map(long => long.toInt))
基本上,每当你想要将一个列表转换为另一个列表时,请使用 map
。
可以使用简单的集合转换来实现,使用map
函数即可。
map
通过将函数应用于列表中的每个元素来工作。在您的情况下有嵌套列表。因此,您需要像以下示例一样两次应用map
函数...
最初的回答:
使用map
函数对集合进行简单的转换即可。
map
函数通过对列表中的每个元素应用函数来实现。在你的情况下,存在嵌套列表。因此,你需要像下面的例子一样两次应用map
函数...
val x : List[List[Long]] = List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
println(x)
val y :List[List[Int]]= x.map(a => a.map(_.toInt))
println(y)
Output :
List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))
List(List(11, 10, 11, 10, 11), List(8, 19, 24, 0, 2))