为什么打印 List[Array[String]] 不输出值?
Why printing List[Array[String]] does not output values?
我试图理解我从下面的代码中得到的输出,它显示了一些带有 @
前缀的字母数字值。我怎样才能将它更改为 ("Hello,world"),("How,are,you")
Scala 代码:
val words = List("Hello_world","How_are_you" )
val ww= words.map(line=>line.split("_"))
println(ww)
输出
List([Ljava.lang.String;@7d4991ad, [Ljava.lang.String;@28d93b30)
这里的输出符合预期。它只是用@hashcode 打印出相应字符串的完全限定名称列表。大多数 JVM 语言的标准。
添加.toList
val ww = words.map(line=>line.split("_").toList)
// List(List(Hello, world), List(How, are, you))
ww == List(List("Hello", "world"), List("How", "are", "you")) // true
否则 ww
是 List[Array[String]]
而不是 List[List[String]]
并且 println
显示数组的哈希码。
或者您正在寻找
val ww1 = words.map(_.replace("_", ","))
// List(Hello,world, How,are,you)
ww1 == List("Hello,world", "How,are,you") // true
像这样prettify Array
printing consider ScalaRunTime.stringOf
import scala.runtime.ScalaRunTime.stringOf
println(stringOf(ww))
输出
List(Array(Hello, world), Array(How, are, you))
正如@Dmytro 所解释的那样,Array
s 与其他 Scala 集合(例如 List
有点不同,一个区别是它们被打印为 hashCode
表示
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
而不是值表示。
也许 mkString 就是您要找的东西?
scala> val ww2 = words.map(line=>line.split("_").mkString(","))
ww2: List[String] = List(Hello,world, How,are,you)
scala> println(ww2)
List(Hello,world, How,are,you)
我试图理解我从下面的代码中得到的输出,它显示了一些带有 @
前缀的字母数字值。我怎样才能将它更改为 ("Hello,world"),("How,are,you")
Scala 代码:
val words = List("Hello_world","How_are_you" )
val ww= words.map(line=>line.split("_"))
println(ww)
输出
List([Ljava.lang.String;@7d4991ad, [Ljava.lang.String;@28d93b30)
这里的输出符合预期。它只是用@hashcode 打印出相应字符串的完全限定名称列表。大多数 JVM 语言的标准。
添加.toList
val ww = words.map(line=>line.split("_").toList)
// List(List(Hello, world), List(How, are, you))
ww == List(List("Hello", "world"), List("How", "are", "you")) // true
否则 ww
是 List[Array[String]]
而不是 List[List[String]]
并且 println
显示数组的哈希码。
或者您正在寻找
val ww1 = words.map(_.replace("_", ","))
// List(Hello,world, How,are,you)
ww1 == List("Hello,world", "How,are,you") // true
像这样prettify Array
printing consider ScalaRunTime.stringOf
import scala.runtime.ScalaRunTime.stringOf
println(stringOf(ww))
输出
List(Array(Hello, world), Array(How, are, you))
正如@Dmytro 所解释的那样,Array
s 与其他 Scala 集合(例如 List
有点不同,一个区别是它们被打印为 hashCode
表示
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
而不是值表示。
也许 mkString 就是您要找的东西?
scala> val ww2 = words.map(line=>line.split("_").mkString(","))
ww2: List[String] = List(Hello,world, How,are,you)
scala> println(ww2)
List(Hello,world, How,are,you)