summaryrefslogtreecommitdiff
path: root/src/library/scalax/collection/immutable/Set2.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-02-13 11:59:49 +0000
committerMartin Odersky <odersky@gmail.com>2009-02-13 11:59:49 +0000
commit04840e2ed4530df9a5ca59b984bf2b37a976dc70 (patch)
tree61394762e202f8ab60e0d3a8e8ac688404241bc3 /src/library/scalax/collection/immutable/Set2.scala
parent708baf94764e2a839e24ca6204060a8d0664d88c (diff)
downloadscala-04840e2ed4530df9a5ca59b984bf2b37a976dc70.tar.gz
scala-04840e2ed4530df9a5ca59b984bf2b37a976dc70.tar.bz2
scala-04840e2ed4530df9a5ca59b984bf2b37a976dc70.zip
new version of collection libraries
Diffstat (limited to 'src/library/scalax/collection/immutable/Set2.scala')
-rwxr-xr-xsrc/library/scalax/collection/immutable/Set2.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/library/scalax/collection/immutable/Set2.scala b/src/library/scalax/collection/immutable/Set2.scala
new file mode 100755
index 0000000000..828c52d053
--- /dev/null
+++ b/src/library/scalax/collection/immutable/Set2.scala
@@ -0,0 +1,47 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id: Set1.scala 16893 2009-01-13 13:09:22Z cunei $
+
+
+
+package scalax.collection.immutable
+
+import collection.generic.Builder
+
+/** This class implements immutable sets with exactly one element.
+ * @author Martin Oderskty
+ * @version 1.0, 019/01/2007
+ */
+@serializable
+class Set2[A](elem1: A, elem2: A) extends Set[A] {
+
+ def size: Int = 2
+
+ def contains(elem: A): Boolean =
+ elem == elem1 || elem == elem2
+
+ def + (elem: A): Set[A] =
+ if (contains(elem)) this
+ else new Set3(elem1, elem2, elem)
+
+ def - (elem: A): Set[A] =
+ if (elem == elem1) new Set1(elem2)
+ else if (elem == elem2) new Set1(elem1)
+ else this
+
+ def elements: Iterator[A] =
+ Iterator(elem1, elem2)
+
+ override def foreach(f: A => Unit): Unit = {
+ f(elem1); f(elem2)
+ }
+}
+
+
+