summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable/LinkedHashSet.scala
blob: c55c16201cfbd4c807dd052bdfa1f444267ed0b5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2005-2006, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

// $Id$

package scala.collection.mutable

/** This class...
 *
 *  @author Sean McDirmid
 *  @version 1.0
 */
class LinkedHashSet[A](private val set0 : java.util.LinkedHashSet) extends Set[A] {

  def this() = this(new java.util.LinkedHashSet)

  private def this(set1 : java.util.Set, b : Boolean) =
    this(new java.util.LinkedHashSet(set1))

  def contains(elem: A): Boolean = set0.contains(elem)

  def +=(elem: A): Unit = set0.add(elem)

  def ++=(set: LinkedHashSet[A]) = set0.addAll(set.set0)
  def --=(set: LinkedHashSet[A]) = set0.removeAll(set.set0)

  def -=(elem: A): Unit = set0.remove(elem)

  def elements = new Iterator[A] {
    val i = set0.iterator
    def hasNext = i.hasNext()
    def next = i.next().asInstanceOf[A]
  }

  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
  }

}