summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable/LinkedHashSet.scala
diff options
context:
space:
mode:
authorSean McDirmid <sean.mcdirmid@gmail.com>2008-02-17 07:29:11 +0000
committerSean McDirmid <sean.mcdirmid@gmail.com>2008-02-17 07:29:11 +0000
commit2e91b45194f8202e4335573706a57128041c336b (patch)
tree253bab1a31af6262893fb37aab8902e96559b60d /src/library/scala/collection/mutable/LinkedHashSet.scala
parent1b1b7d651599c5cc73df4538635cbf4e269329f7 (diff)
downloadscala-2e91b45194f8202e4335573706a57128041c336b.tar.gz
scala-2e91b45194f8202e4335573706a57128041c336b.tar.bz2
scala-2e91b45194f8202e4335573706a57128041c336b.zip
Fixing bugs in new and old plugin.
Diffstat (limited to 'src/library/scala/collection/mutable/LinkedHashSet.scala')
-rw-r--r--src/library/scala/collection/mutable/LinkedHashSet.scala57
1 files changed, 27 insertions, 30 deletions
diff --git a/src/library/scala/collection/mutable/LinkedHashSet.scala b/src/library/scala/collection/mutable/LinkedHashSet.scala
index 21fd4845fb..b86bccd173 100644
--- a/src/library/scala/collection/mutable/LinkedHashSet.scala
+++ b/src/library/scala/collection/mutable/LinkedHashSet.scala
@@ -10,43 +10,40 @@
package scala.collection.mutable
-/** This class...
- *
- * @author Sean McDirmid
- * @version 1.0
- */
-@deprecated class LinkedHashSet[A](private val set0 : java.util.LinkedHashSet[A]) extends Set[A] {
- def this() = this(new java.util.LinkedHashSet[A])
+object LinkedHashSet {
+ /** The empty map of this type */
+ def empty[A] = new LinkedHashSet[A]
- private def this(set1 : java.util.Set[A], b : Boolean) =
- this(new java.util.LinkedHashSet[A](set1))
-
- def contains(elem: A): Boolean = set0.contains(elem)
+ /** The canonical factory for this type
+ */
+ def apply[A](elems: A*) = empty[A] ++ elems
+}
- def +=(elem: A): Unit = set0.add(elem)
+@serializable
+class LinkedHashSet[A] extends Set[A] with FlatHashTable[A] {
+ private var ordered = List[A]()
- def ++=(set: LinkedHashSet[A]) = set0.addAll(set.set0)
- def --=(set: LinkedHashSet[A]) = set0.removeAll(set.set0)
+ def contains(elem: A): Boolean = containsEntry(elem)
- def -=(elem: A): Unit = set0.remove(elem)
+ def +=(elem: A) { add(elem) }
- def elements = new Iterator[A] {
- val i = set0.iterator
- def hasNext = i.hasNext()
- def next = i.next().asInstanceOf[A]
+ def add(elem : A) : Boolean = {
+ if (addEntry(elem)) {
+ ordered = elem :: ordered
+ true
+ } else false
}
-
- override def clear() = set0.clear()
-
- def size = set0.size()
-
- override def toString() = set0.toString()
-
- override def clone(): Set[A] = {
- val res = new LinkedHashSet[A](set0, true)
- res ++= this
- res
+ def -=(elem: A) { remove(elem) }
+ def remove(elem : A) : Boolean = removeEntry(elem) match {
+ case None => false
+ case Some(elem) => ordered = ordered.filter(e => e != elem); true
}
+ override def clear() = {
+ ordered = Nil
+ super.clear()
+ }
+ override def clone(): Set[A] = new LinkedHashSet[A] ++ this
+ override def elements = ordered.reverse.elements
}