Skip to content

Instantly share code, notes, and snippets.

@ogatatsu
Created February 25, 2011 17:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ogatatsu/844098 to your computer and use it in GitHub Desktop.
Save ogatatsu/844098 to your computer and use it in GitHub Desktop.
/*
import scala.collection.JavaConversions.JMapWrapperLike
import scala.collection.generic.{SortedMapFactory, CanBuildFrom}
import scala.collection
class TreeMap[A, B](implicit val ordering: Ordering[A])
extends JMapWrapperLike[A, B, TreeMap[A, B]]
with collection.SortedMap[A, B]
with collection.SortedMapLike[A, B, TreeMap[A, B]] {
val underlying = new java.util.TreeMap[A, B](ordering)
override def empty: TreeMap[A, B] = TreeMap.empty
}
object TreeMap extends SortedMapFactory[TreeMap] {
def empty[A, B](implicit ord: Ordering[A]): TreeMap[A, B] = new TreeMap[A, B]()
implicit def canBuildFrom[A, B](implicit ord: Ordering[A]): CanBuildFrom[Coll, (A, B), TreeMap[A, B]] = new SortedMapCanBuildFrom[A, B]
}
こっちはあきらめ
*/
import scala.collection.JavaConversions.JMapWrapperLike
import scala.collection.generic.{CanBuildFrom}
import scala.collection.mutable.{Builder, MapBuilder}
class TreeMap[A, B](implicit val ordering: Ordering[A]) extends JMapWrapperLike[A, B, TreeMap[A, B]] {
val underlying = new java.util.TreeMap[A, B](ordering)
override def empty: TreeMap[A, B] = new TreeMap[A, B]()
override def stringPrefix: String = "TreeMap"
}
//ほとんどSortedMapFactoryあたりからのコピー
object TreeMap {
def apply[A, B](elems: (A, B)*)(implicit ord: Ordering[A]): TreeMap[A, B] = (newBuilder[A, B](ord) ++= elems).result
def newBuilder[A, B](implicit ord: Ordering[A]): Builder[(A, B), TreeMap[A, B]] =
new MapBuilder[A, B, TreeMap[A, B]](empty(ord))
class SortedMapCanBuildFrom[A, B](implicit ord: Ordering[A]) extends CanBuildFrom[TreeMap[_, _], (A, B), TreeMap[A, B]] {
def apply(from: TreeMap[_, _]) = newBuilder[A, B](ord)
def apply() = newBuilder[A, B]
}
def empty[A, B](implicit ord: Ordering[A]): TreeMap[A, B] = new TreeMap[A, B]()
implicit def canBuildFrom[A, B](implicit ord: Ordering[A]): CanBuildFrom[TreeMap[_, _], (A, B), TreeMap[A, B]] = new SortedMapCanBuildFrom[A, B]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment