diff options
author | Sean McDirmid <sean.mcdirmid@gmail.com> | 2008-02-17 07:29:11 +0000 |
---|---|---|
committer | Sean McDirmid <sean.mcdirmid@gmail.com> | 2008-02-17 07:29:11 +0000 |
commit | 2e91b45194f8202e4335573706a57128041c336b (patch) | |
tree | 253bab1a31af6262893fb37aab8902e96559b60d /src/library/scala/collection/mutable/LinkedHashSet.scala | |
parent | 1b1b7d651599c5cc73df4538635cbf4e269329f7 (diff) | |
download | scala-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.scala | 57 |
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 } |