字符串的 ArrayBuffer - 最小值
ArrayBuffer of Strings - Min
我在 scalatest
规范中有以下代码:
val arr = ArrayBuffer("Mary", "had", "a", "little", "lamb")
arr.max shouldEqual "little"
arr.min shouldEqual "a"
第二个 失败 ,说:
"[Mary]" did not equal "[a]"
为什么这不是return"a"
?
根据 Scala for the Impatient,第 2 版:“...min
和 max
方法产生最小和最大的元素数组或数组缓冲区。"
Horstmann, Cay S.. Scala for the Impatient(Kindle Locations 1515-1517)。培生教育。 Kindle 版。
后记:当书中说“...产生 最小 和 最大...”时,它表示 ASCII 比较,而不是在所选答案中实现的长度。
在 ascii table 上,大写字母排在小写字母之前,因此 Mary < a
是最小的元素,您可以在 scala REPL 中查看:
scala> "Mary" < "a"
// res4: Boolean = true
如果需要按字符串中的字符数进行比较,可以使用minBy
和maxBy
按大小比较字符串:
import scala.collection.mutable.ArrayBuffer
val arr = ArrayBuffer("Mary", "had", "a", "little", "lamb")
// arr: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Mary, had, a, little, lamb)
arr.minBy(_.size)
// res5: String = a
arr.maxBy(_.size)
// res6: String = little
我在 scalatest
规范中有以下代码:
val arr = ArrayBuffer("Mary", "had", "a", "little", "lamb")
arr.max shouldEqual "little"
arr.min shouldEqual "a"
第二个 失败 ,说:
"[Mary]" did not equal "[a]"
为什么这不是return"a"
?
根据 Scala for the Impatient,第 2 版:“...min
和 max
方法产生最小和最大的元素数组或数组缓冲区。"
Horstmann, Cay S.. Scala for the Impatient(Kindle Locations 1515-1517)。培生教育。 Kindle 版。
后记:当书中说“...产生 最小 和 最大...”时,它表示 ASCII 比较,而不是在所选答案中实现的长度。
在 ascii table 上,大写字母排在小写字母之前,因此 Mary < a
是最小的元素,您可以在 scala REPL 中查看:
scala> "Mary" < "a"
// res4: Boolean = true
如果需要按字符串中的字符数进行比较,可以使用minBy
和maxBy
按大小比较字符串:
import scala.collection.mutable.ArrayBuffer
val arr = ArrayBuffer("Mary", "had", "a", "little", "lamb")
// arr: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Mary, had, a, little, lamb)
arr.minBy(_.size)
// res5: String = a
arr.maxBy(_.size)
// res6: String = little