我需要合并两个通用序列,我试图这样做,但是我知道这是错误的。我应该如何正确地做呢? (我还需要订购新的Seq)
object Main extends App{
val strings = Seq("f", "d", "a")
val numbers = Seq(1,5,4,2)
val strings2 = Seq("c", "b");
val strings3 = strings2.concat(strings)
println(strings3)
println(numbers)
}
class Seq[T] private(initialElems: T*) {
override def toString: String = initialElems.toString
val elems = initialElems
def concat(a:Seq[T]) = a.elems ++ this.elems
}
object Seq {
def apply[T: Ordering](initialElems: T*): Seq[T] = new Seq(initialElems.sorted:_*)
}
您无法使用++
保持顺序连接两个排序的数组。
您需要通过合并排序算法实现类似merge
的操作,并根据合并的元素创建新的Seq,而不进行排序。因此,您需要做两件事:
实施合并:
def merge(a: Seq[T], b: Seq[T]) = ???
实施用于创建Seq实例而不在Seq对象中排序的新方法:
def fromSorted(initialElems: T*): Seq[T] = new Seq(initialElems:_*)
阅读有关合并排序wiki的更多信息