在Scala中实现自定义SortedMap

在Scala中实现自定义SortedMap,scala,collections,Scala,Collections,不知何故,我似乎无法正确实现SortedMap。下面是一个最小的(非)工作示例: class MyMap[A](t: Map[Long, A]) extends SortedMap[Long, A] { protected val internalMap = TreeMap(t.toArray: _*) def -(key: Long) = MyMap(internalMap - key) def get(key: Long) = internalMap.get(key) d

不知何故,我似乎无法正确实现SortedMap。下面是一个最小的(非)工作示例:

class MyMap[A](t: Map[Long, A]) extends SortedMap[Long, A]  {
  protected val internalMap = TreeMap(t.toArray: _*)

  def -(key: Long) = MyMap(internalMap - key)
  def get(key: Long) = internalMap.get(key)
  def rangeImpl(from: Option[Long], until: Option[Long]) = TreeMap(internalMap.rangeImpl(from, until))
  def iterator = internalMap.iterator
  def ordering = internalMap.ordering
}
但是,无论我传递到
MyMap
构造函数中的是什么,例如调用它的
size
,总是返回0



附录:我刚刚将代码复制粘贴到一个新项目中,它工作了8-\无论如何,让我改变这个问题以使其有用:这是扩展
SortedMap
的正确方法吗?

在添加了两个缺少的方法使其编译后,您的代码对我来说运行良好:

class MyMap[A](t: Map[Long, A]) extends SortedMap[Long, A]  {
  protected val internalMap = TreeMap(t.toArray: _*)
  def +[B1 >: A](kv: (Long, B1)) = new MyMap(internalMap + kv)
  def -(key: Long) = new MyMap(internalMap - key)
  def get(key: Long) = internalMap.get(key)
  def rangeImpl(from: Option[Long], until: Option[Long]) = internalMap.rangeImpl(from, until)
  def iterator = internalMap.iterator
  def ordering = internalMap.ordering
}
从REP:

scala> t
res5: Map[Long,String] = Map(123 -> abc, 456 -> def)

scala> new MyMap(t)
res6: MyMap[String] = Map(123 -> abc, 456 -> def)

scala> res6.size
res7: Int = 2

我遗漏了什么吗?

用一个问题来回答您的附录:既然
TreeMap
实现了
SortedMap
,为什么您需要将它包装在
MyMap
中?为什么不直接使用
TreeMap
?(只是确认一下:我们谈论的是
scala.collection.immutable.TreeMap
,对吗?@Chris:这是一个最小的工作示例:-)在现实生活中,我想为另一种SortedMap重新实现我自己的函数。是的,我们谈论的是
scala.collection.immutable.SortedMap