diff options
author | Sean McDirmid <sean.mcdirmid@gmail.com> | 2007-02-26 13:56:20 +0000 |
---|---|---|
committer | Sean McDirmid <sean.mcdirmid@gmail.com> | 2007-02-26 13:56:20 +0000 |
commit | 853b9424e5dbbcfccecc8b027dabbb460f1618c2 (patch) | |
tree | 43204dc4cf0362b5af520bae4b13c0cab6fb3ca1 /src/library/scala/collection/immutable/SortedMap.scala | |
parent | b94b6f9af69aa73f1b2917414fdcdc2d007f2976 (diff) | |
download | scala-853b9424e5dbbcfccecc8b027dabbb460f1618c2.tar.gz scala-853b9424e5dbbcfccecc8b027dabbb460f1618c2.tar.bz2 scala-853b9424e5dbbcfccecc8b027dabbb460f1618c2.zip |
Diffstat (limited to 'src/library/scala/collection/immutable/SortedMap.scala')
-rw-r--r-- | src/library/scala/collection/immutable/SortedMap.scala | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/library/scala/collection/immutable/SortedMap.scala b/src/library/scala/collection/immutable/SortedMap.scala new file mode 100644 index 0000000000..a26f734755 --- /dev/null +++ b/src/library/scala/collection/immutable/SortedMap.scala @@ -0,0 +1,38 @@ +package scala.collection.immutable; + +trait SortedMap[A,+B] extends Map[A,B] with collection.SortedMap[A,B] { + override def rangeImpl(from : Option[A], until : Option[A]) : SortedMap[A,B]; + override def from(from: A) = rangeImpl(Some(from), None); + override def until(until: A) = rangeImpl(None, Some(until)); + override def range(from: A, until: A) = rangeImpl(Some(from),Some(until)); + override def empty[C]: SortedMap[A, C] + override def update [B1 >: B] (key: A, value: B1): SortedMap[A, B1] + override def + [B1 >: B] (kv: Pair[A, B1]): SortedMap[A, B1] = update(kv._1, kv._2) + + override def + [B1 >: B] (kv1: Pair[A, B1], kv2: Pair[A, B1], kvs: Pair[A, B1]*): SortedMap[A, B1] = + this + kv1 + kv2 ++ kvs + override def ++ [B1 >: B] (kvs: Iterable[Pair[A, B1]]): SortedMap[A, B1] = + ((this: SortedMap[A, B1]) /: kvs) ((m, kv) => m + kv) + override def ++ [B1 >: B] (kvs: Iterator[Pair[A, B1]]): SortedMap[A, B1] = + ((this: SortedMap[A, B1]) /: kvs) ((m, kv) => m + kv) + override def - (key: A): SortedMap[A, B] + override def - (key1: A, key2: A, keys: A*): SortedMap[A, B] = + this - key1 - key2 -- keys + override def -- (keys: Iterable[A]): SortedMap[A, B] = this -- keys.elements + + override def -- (keys: Iterator[A]): SortedMap[A, B] = + (this /: keys) ((m, key) => m - key) + + override def transform[C](f: (A, B) => C): SortedMap[A, C] = { + var res = empty[C] + foreach { case Pair(key, value) => res = res.update(key, f(key, value)) } + res + } + override def filter(p: Pair[A, B] => Boolean): SortedMap[A, B] = { + var res = this + foreach { + case kv @ Pair(key, _) => if (!p(kv)) { res = res - key } + } + res + } +}
\ No newline at end of file |