Sid*_*Sid 2 functional-programming scala seq
在Scala中,如何将Seq [Int]转换为由Seq中的数字组成的单个数字.
例如
Seq(2,3,45,10)要234510为数字
一种简单的方法是
Seq(2,3,45,10).mkString.toLong
是否有更好的,可能更高性能/功能的方式?
Seq(2,3,45,10).reduce((x,y) => x * math.pow(10,math.floor(math.log10(y)) + 1).toInt + y)
Run Code Online (Sandbox Code Playgroud)
要么
Seq(2,3,45,10).map(BigDecimal(_)).reduce((x,y) => x * BigDecimal(10).pow(y.precision) + y)
Run Code Online (Sandbox Code Playgroud)
但实际上我认为这_.mkString.toLong是最有效的,唯一的问题是它只适用于十进制表示.对于任意基数,你可以做
BigInt(Seq(0x2,0x3,0x45,0x10).map(BigInt(_).toString(16)).mkString, 16)
Run Code Online (Sandbox Code Playgroud)