Scala 排序泛型序列

Scala 排序泛型序列,scala,generics,Scala,Generics,我是斯卡拉的新手。我有一个通用类 object Main extends App{ val strings = new CustomSeq("b", "c", "a") val numbers = new CustomSeq(1,5,4,2) } class CustomSeq[T](initialElems: T*) { private val elems = scala.collection.mutable.ArrayBuffer[T]() elems ++= i

我是斯卡拉的新手。我有一个通用类

object Main extends App{
  val strings = new CustomSeq("b", "c", "a")
  val numbers = new CustomSeq(1,5,4,2)
}


class CustomSeq[T](initialElems: T*) {

   private val elems = scala.collection.mutable.ArrayBuffer[T]()

   elems ++= initialElems
}
我想把课堂上的名单整理一下。例如,在这个例子中,我想输入字符串和数字 列表(a、b、c)和列表(1、2、4、5)。
我该怎么做呢?

您可以将构造函数设为私有,并使用排序的
初始元素定义工厂方法创建实例

class Seq[T] private(initialElems: T*) {
  override def toString: String = initialElems.toString
}

object Seq {
  def apply[T: Ordering](initialElems: T*): Seq[T] = new Seq(initialElems.sorted:_*)
}

val strings = Seq("b", "c", "a")
val numbers = Seq(1,5,4,2)
println(strings) // ArraySeq(a, b, c)
println(numbers) // ArraySeq(1, 2, 4, 5)

当然,在
Seq
(如果您添加了任何)中的操作之后,您必须注意
初始元素保持排序。

您可以将构造函数设置为私有,并使用排序的
初始元素定义工厂方法创建实例

class Seq[T] private(initialElems: T*) {
  override def toString: String = initialElems.toString
}

object Seq {
  def apply[T: Ordering](initialElems: T*): Seq[T] = new Seq(initialElems.sorted:_*)
}

val strings = Seq("b", "c", "a")
val numbers = Seq(1,5,4,2)
println(strings) // ArraySeq(a, b, c)
println(numbers) // ArraySeq(1, 2, 4, 5)

当然,在
Seq
(如果您添加了)中的操作之后,您必须注意
initialElems
保持排序。

将与您的
Seq
和标准库中的名称发生冲突,顺便说一句,将与
Seq
和标准库中的名称发生冲突,顺便说一句