diff options
author | Matthias Zenger <mzenger@gmail.com> | 2003-09-23 10:03:33 +0000 |
---|---|---|
committer | Matthias Zenger <mzenger@gmail.com> | 2003-09-23 10:03:33 +0000 |
commit | c8f0a7b6bd21b8207a25677c77ae896d1a35a967 (patch) | |
tree | 84202cf5679b07845c35e61da18173bfcc6ad261 /sources | |
parent | 83737b19d1c49042c6b04f30bac8979dc33205a7 (diff) | |
download | scala-c8f0a7b6bd21b8207a25677c77ae896d1a35a967.tar.gz scala-c8f0a7b6bd21b8207a25677c77ae896d1a35a967.tar.bz2 scala-c8f0a7b6bd21b8207a25677c77ae896d1a35a967.zip |
Library classes for adapting Java collection cl...
Library classes for adapting Java collection classes to the Scala
framework.
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scala/collection/mutable/JavaMapAdaptor.scala | 60 | ||||
-rw-r--r-- | sources/scala/collection/mutable/JavaSetAdaptor.scala | 38 |
2 files changed, 98 insertions, 0 deletions
diff --git a/sources/scala/collection/mutable/JavaMapAdaptor.scala b/sources/scala/collection/mutable/JavaMapAdaptor.scala new file mode 100644 index 0000000000..b575d172c0 --- /dev/null +++ b/sources/scala/collection/mutable/JavaMapAdaptor.scala @@ -0,0 +1,60 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +** $Id$ +\* */ + +package scala.collection.mutable; + + +/** This class can be used as an adaptor to create mutable maps from + * Java classes that implementat the <code>java.util.Map</code> interface. + * + * @author Matthias Zenger + * @version 1.0, 21/07/2003 + */ +class JavaMapAdaptor[A, B](jmap: java.util.Map) extends Map[A, B] { + + def size: Int = jmap.size(); + + def get(key: A): Option[B] = + if (jmap.containsKey(key)) Some(jmap.get(key).asInstanceOf[B]) else None; + + override def isEmpty: Boolean = jmap.isEmpty(); + + override def apply(key: A): B = jmap.get(key).asInstanceOf[B]; + + override def contains(key: A): Boolean = jmap.containsKey(key); + + override def isDefinedAt(key: A) = jmap.containsKey(key); + + override def keys: Iterator[A] = new Iterator[A] { + val iter = jmap.keySet().iterator(); + def hasNext = iter.hasNext(); + def next = iter.next().asInstanceOf[A]; + } + + override def values: Iterator[B] = new Iterator[B] { + val iter = jmap.values().iterator(); + def hasNext = iter.hasNext(); + def next = iter.next().asInstanceOf[B]; + } + + def elements: Iterator[Pair[A, B]] = new Iterator[Pair[A, B]] { + val iter = jmap.keySet().iterator(); + def hasNext = iter.hasNext(); + def next = { + val key = iter.next().asInstanceOf[A]; + Pair(key, apply(key)) + } + } + + def update(key: A, value: B): Unit = { val x = jmap.put(key, value); } + + def -=(key: A): Unit = { val x = jmap.remove(key); } + + override def clear: Unit = jmap.clear(); +} diff --git a/sources/scala/collection/mutable/JavaSetAdaptor.scala b/sources/scala/collection/mutable/JavaSetAdaptor.scala new file mode 100644 index 0000000000..39f6ae5755 --- /dev/null +++ b/sources/scala/collection/mutable/JavaSetAdaptor.scala @@ -0,0 +1,38 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +** $Id$ +\* */ + +package scala.collection.mutable; + + +/** This class can be used as an adaptor to create mutable sets from + * Java classes that implement interface <code>java.util.Set</code>. + * + * @author Matthias Zenger + * @version 1.0, 19/09/2003 + */ +class JavaSetAdaptor[A, B](jset: java.util.Set) extends Set[A] { + + def size: Int = jset.size(); + + override def isEmpty: Boolean = jset.isEmpty(); + + def contains(elem: A): Boolean = jset.contains(elem); + + def elements: Iterator[A] = new Iterator[A] { + val iter = jset.iterator(); + def hasNext = iter.hasNext(); + def next = iter.next().asInstanceOf[A]; + } + + def +=(elem: A): Unit = { val x = jset.add(elem); } + + def -=(elem: A): Unit = { val x = jset.remove(elem); } + + def clear: Unit = jset.clear(); +} |