From fa15a3d86678031567fd8d1cce2e73628f4d24ac Mon Sep 17 00:00:00 2001 From: stenman Date: Tue, 9 Dec 2003 14:25:53 +0000 Subject: More comments and cleanups. --- sources/scala/collection/immutable/ListSet.scala | 69 ++++++++++++++++++++---- 1 file changed, 60 insertions(+), 9 deletions(-) (limited to 'sources/scala/collection/immutable/ListSet.scala') diff --git a/sources/scala/collection/immutable/ListSet.scala b/sources/scala/collection/immutable/ListSet.scala index fa3582e31f..dd89906cec 100644 --- a/sources/scala/collection/immutable/ListSet.scala +++ b/sources/scala/collection/immutable/ListSet.scala @@ -24,18 +24,44 @@ object ListSet { */ class ListSet[A] with Set[A] { + /** Returns the number of elements in this set. + * + * @return number of set elements. + */ def size: Int = 0; + /** Checks if this set contains element elem. + * + * @param elem the element to check for membership. + * @return true, iff elem is contained in this set. + */ def contains(elem: A): Boolean = false; + /** This method creates a new set with an additional element. + */ def +(elem: A): ListSet[A] = new Node(elem); + /** - can be used to remove a single element from + * a set. + */ def -(elem: A): ListSet[A] = this; + /** Creates a new iterator over all elements contained in this + * object. + * + * @return the new iterator + */ def elements: Iterator[A] = toList.elements; + /** Transform this set into a list of all elements. + * + * @return a list which enumerates all elements of this set. + */ override def toList: List[A] = Nil; + /** Compares two sets for equality. + * Two set are equal iff they contain the same elements. + */ override def equals(obj: Any): Boolean = if (obj.isInstanceOf[scala.collection.Set[A]]) { val that = obj.asInstanceOf[scala.collection.Set[A]]; @@ -46,14 +72,39 @@ class ListSet[A] with Set[A] { override def hashCode(): Int = 0; protected class Node(elem: A) extends ListSet[A] { - override def size = ListSet.this.size + 1; - override def isEmpty: Boolean = false; - override def contains(e: A) = (e == elem) || ListSet.this.contains(e); - override def +(e: A): ListSet[A] = if (contains(e)) this else new Node(e); - override def -(e: A): ListSet[A] = if (e == elem) ListSet.this else { - val tail = ListSet.this - e; new tail.Node(elem) - } - override def toList: List[A] = elem :: ListSet.this.toList; - override def hashCode(): Int = elem.hashCode() + ListSet.this.hashCode(); + /** Returns the number of elements in this set. + * + * @return number of set elements. + */ + override def size = ListSet.this.size + 1; + /** Checks if this set is empty. + * + * @return true, iff there is no element in the set. + */ + override def isEmpty: Boolean = false; + + /** Checks if this set contains element elem. + * + * @param elem the element to check for membership. + * @return true, iff elem is contained in this set. + */ + override def contains(e: A) = (e == elem) || ListSet.this.contains(e); + + /** This method creates a new set with an additional element. + */ + override def +(e: A): ListSet[A] = if (contains(e)) this else new Node(e); + /** - can be used to remove a single element from + * a set. + */ + override def -(e: A): ListSet[A] = if (e == elem) ListSet.this else { + val tail = ListSet.this - e; new tail.Node(elem) + } + + /** Transform this set into a list of all elements. + * + * @return a list which enumerates all elements of this set. + */ + override def toList: List[A] = elem :: ListSet.this.toList; + override def hashCode(): Int = elem.hashCode() + ListSet.this.hashCode(); } } -- cgit v1.2.3