diff options
Diffstat (limited to 'src/library/scala/collection/immutable')
18 files changed, 65 insertions, 50 deletions
diff --git a/src/library/scala/collection/immutable/HashMap.scala b/src/library/scala/collection/immutable/HashMap.scala index 351cbf60d8..c20dc017f8 100644 --- a/src/library/scala/collection/immutable/HashMap.scala +++ b/src/library/scala/collection/immutable/HashMap.scala @@ -107,9 +107,9 @@ class HashMap[A, +B] extends Map[A,B] with ImmutableMapTemplate[A, B, HashMap[A, s } - def elements = synchronized { + def iterator = synchronized { makeCopyIfUpdated() - entries map {e => (e.key, getValue(e))} + entriesIterator map {e => (e.key, getValue(e))} } private def getValue(e: Entry) = diff --git a/src/library/scala/collection/immutable/HashSet.scala b/src/library/scala/collection/immutable/HashSet.scala index 86efa9c6c6..215fe80914 100644 --- a/src/library/scala/collection/immutable/HashSet.scala +++ b/src/library/scala/collection/immutable/HashSet.scala @@ -81,11 +81,11 @@ class HashSet[A] extends Set[A] s } - override def elements = synchronized { + override def iterator = synchronized { makeCopyIfUpdated() // note need to cache because (later versions of) set might be mutated while elements are traversed. - val cached = new mutable.ArrayBuffer() ++ super.elements - cached.elements + val cached = new mutable.ArrayBuffer() ++= super.iterator + cached.iterator } private def logLimit: Int = Math.sqrt(table.length).toInt diff --git a/src/library/scala/collection/immutable/ImmutableIterator.scala.disabled b/src/library/scala/collection/immutable/ImmutableIterator.scala.disabled index 7733c17bec..0cdfc4a988 100644 --- a/src/library/scala/collection/immutable/ImmutableIterator.scala.disabled +++ b/src/library/scala/collection/immutable/ImmutableIterator.scala.disabled @@ -104,7 +104,10 @@ sealed abstract class ImmutableIterator[+A] { /** Converts this immutable iterator into a conventional iterator. */ - def elements: Iterator[A] = new Elements + def iterator: Iterator[A] = new Elements + + @deprecated def elements = iterator + } diff --git a/src/library/scala/collection/immutable/IntMap.scala b/src/library/scala/collection/immutable/IntMap.scala index a7b66628bb..32ad7fca42 100644 --- a/src/library/scala/collection/immutable/IntMap.scala +++ b/src/library/scala/collection/immutable/IntMap.scala @@ -145,7 +145,7 @@ sealed abstract class IntMap[+T] extends scala.collection.immutable.Map[Int, T] /** * Iterator over key, value pairs of the map in unsigned order of the keys. */ - def elements : Iterator[(Int, T)] = this match { + def iterator : Iterator[(Int, T)] = this match { case IntMap.Nil => Iterator.empty; case _ => new IntMapEntryIterator(this); } @@ -159,7 +159,7 @@ sealed abstract class IntMap[+T] extends scala.collection.immutable.Map[Int, T] case IntMap.Nil => {}; } - override def keys : Iterator[Int] = this match { + override def keysIterator : Iterator[Int] = this match { case IntMap.Nil => Iterator.empty; case _ => new IntMapKeyIterator(this); } @@ -176,7 +176,7 @@ sealed abstract class IntMap[+T] extends scala.collection.immutable.Map[Int, T] case IntMap.Nil => {} } - override def values : Iterator[T] = this match { + override def valuesIterator : Iterator[T] = this match { case IntMap.Nil => Iterator.empty; case _ => new IntMapValueIterator(this); } diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala index 9a205e97c4..38ddfee8b5 100644 --- a/src/library/scala/collection/immutable/List.scala +++ b/src/library/scala/collection/immutable/List.scala @@ -74,7 +74,7 @@ sealed abstract class List[+A] extends LinearSequence[A] */ def :::[B >: A](prefix: List[B]): List[B] = if (isEmpty) prefix - else (new ListBuffer[B] ++ prefix).prependToList(this) + else (new ListBuffer[B] ++= prefix).prependToList(this) /** Reverse the given prefix and append the current list to that. * This function is equivalent to an application of <code>reverse</code> @@ -807,7 +807,7 @@ object List extends SequenceFactory[List] { * <code>[a<sub>0</sub>, ..., a<sub>k</sub>]</code>, * <code>[b<sub>0</sub>, ..., b<sub>l</sub>]</code> and * <code>n = min(k,l)</code> - * @deprecated use (xs, ys).forall(f) instead + * @deprecated use (xs, ys).exists(f) instead */ @deprecated def exists2[A,B](xs: List[A], ys: List[B])(f: (A, B) => Boolean): Boolean = { var xc = xs diff --git a/src/library/scala/collection/immutable/ListMap.scala b/src/library/scala/collection/immutable/ListMap.scala index 5c57715409..816018bf28 100644 --- a/src/library/scala/collection/immutable/ListMap.scala +++ b/src/library/scala/collection/immutable/ListMap.scala @@ -86,14 +86,14 @@ class ListMap[A, +B] extends Map[A, B] with ImmutableMapTemplate[A, B, ListMap[A /** Returns an iterator over key-value pairs. */ - def elements: Iterator[(A,B)] = + def iterator: Iterator[(A,B)] = new Iterator[(A,B)] { var self: ListMap[A,B] = ListMap.this def hasNext = !self.isEmpty def next: (A,B) = if (!hasNext) throw new NoSuchElementException("next on empty iterator") else { val res = (self.key, self.value); self = self.next; res } - }.toList.reverse.elements + }.toList.reverseIterator protected def key: A = throw new NoSuchElementException("empty map") protected def value: B = throw new NoSuchElementException("empty map") diff --git a/src/library/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala index 210413171b..8dc961a308 100644 --- a/src/library/scala/collection/immutable/ListSet.scala +++ b/src/library/scala/collection/immutable/ListSet.scala @@ -62,7 +62,7 @@ class ListSet[A] extends Set[A] * @throws Predef.NoSuchElementException * @return the new iterator */ - def elements: Iterator[A] = new Iterator[A] { + def iterator: Iterator[A] = new Iterator[A] { var that: ListSet[A] = self; def hasNext = !that.isEmpty; def next: A = @@ -70,6 +70,8 @@ class ListSet[A] extends Set[A] else { val res = that.elem; that = that.next; res } } + @deprecated def elements = iterator + /** * @throws Predef.NoSuchElementException */ diff --git a/src/library/scala/collection/immutable/LongMap.scala b/src/library/scala/collection/immutable/LongMap.scala index f30f9eb17d..346e97345f 100644 --- a/src/library/scala/collection/immutable/LongMap.scala +++ b/src/library/scala/collection/immutable/LongMap.scala @@ -146,7 +146,7 @@ sealed abstract class LongMap[+T] extends scala.collection.immutable.Map[Long, T /** * Iterator over key, value pairs of the map in unsigned order of the keys. */ - def elements : Iterator[(Long, T)] = this match { + def iterator: Iterator[(Long, T)] = this match { case LongMap.Nil => Iterator.empty; case _ => new LongMapEntryIterator(this); } @@ -160,7 +160,7 @@ sealed abstract class LongMap[+T] extends scala.collection.immutable.Map[Long, T case LongMap.Nil => {}; } - override def keys : Iterator[Long] = this match { + override def keysIterator : Iterator[Long] = this match { case LongMap.Nil => Iterator.empty; case _ => new LongMapKeyIterator(this); } @@ -177,7 +177,7 @@ sealed abstract class LongMap[+T] extends scala.collection.immutable.Map[Long, T case LongMap.Nil => {} } - override def values : Iterator[T] = this match { + override def valuesIterator : Iterator[T] = this match { case LongMap.Nil => Iterator.empty; case _ => new LongMapValueIterator(this); } diff --git a/src/library/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala index 103d8f3d5a..ef3c3006f0 100644 --- a/src/library/scala/collection/immutable/Map.scala +++ b/src/library/scala/collection/immutable/Map.scala @@ -48,7 +48,7 @@ object Map extends ImmutableMapFactory[Map] { class WithDefault[A, +B](underlying: Map[A, B], d: A => B) extends Map[A, B] { override def size = underlying.size def get(key: A) = underlying.get(key) - def elements = underlying.elements + def iterator = underlying.iterator override def empty = new WithDefault(underlying.empty, d) override def updated[B1 >: B](key: A, value: B1): WithDefault[A, B1] = new WithDefault[A, B1](underlying.updated[B1](key, value), d) def + [B1 >: B](kv: (A, B1)): WithDefault[A, B1] = updated(kv._1, kv._2) @@ -60,7 +60,7 @@ object Map extends ImmutableMapFactory[Map] { class EmptyMap[A, +B] extends Map[A, B] { override def size: Int = 0 def get(key: A): Option[B] = None - def elements: Iterator[(A, B)] = Iterator.empty + def iterator: Iterator[(A, B)] = Iterator.empty override def updated [B1 >: B] (key: A, value: B1): Map[A, B1] = new Map1(key, value) def + [B1 >: B](kv: (A, B1)): Map[A, B1] = updated(kv._1, kv._2) def - (key: A): Map[A, B] = this @@ -71,7 +71,7 @@ object Map extends ImmutableMapFactory[Map] { override def size = 1 def get(key: A): Option[B] = if (key == key1) Some(value1) else None - def elements = Iterator((key1, value1)) + def iterator = Iterator((key1, value1)) override def updated [B1 >: B] (key: A, value: B1): Map[A, B1] = if (key == key1) new Map1(key1, value) else new Map2(key1, value1, key, value) @@ -90,7 +90,7 @@ object Map extends ImmutableMapFactory[Map] { if (key == key1) Some(value1) else if (key == key2) Some(value2) else None - def elements = Iterator((key1, value1), (key2, value2)) + def iterator = Iterator((key1, value1), (key2, value2)) override def updated [B1 >: B] (key: A, value: B1): Map[A, B1] = if (key == key1) new Map2(key1, value, key2, value2) else if (key == key2) new Map2(key1, value1, key2, value) @@ -113,7 +113,7 @@ object Map extends ImmutableMapFactory[Map] { else if (key == key2) Some(value2) else if (key == key3) Some(value3) else None - def elements = Iterator((key1, value1), (key2, value2), (key3, value3)) + def iterator = Iterator((key1, value1), (key2, value2), (key3, value3)) override def updated [B1 >: B] (key: A, value: B1): Map[A, B1] = if (key == key1) new Map3(key1, value, key2, value2, key3, value3) else if (key == key2) new Map3(key1, value1, key2, value, key3, value3) @@ -139,7 +139,7 @@ object Map extends ImmutableMapFactory[Map] { else if (key == key3) Some(value3) else if (key == key4) Some(value4) else None - def elements = Iterator((key1, value1), (key2, value2), (key3, value3), (key4, value4)) + def iterator = Iterator((key1, value1), (key2, value2), (key3, value3), (key4, value4)) override def updated [B1 >: B] (key: A, value: B1): Map[A, B1] = if (key == key1) new Map4(key1, value, key2, value2, key3, value3, key4, value4) else if (key == key2) new Map4(key1, value1, key2, value, key3, value3, key4, value4) diff --git a/src/library/scala/collection/immutable/PagedSeq.scala b/src/library/scala/collection/immutable/PagedSeq.scala index 85eca5777b..fe34195238 100644 --- a/src/library/scala/collection/immutable/PagedSeq.scala +++ b/src/library/scala/collection/immutable/PagedSeq.scala @@ -34,7 +34,7 @@ object PagedSeq { /** Constructs a character sequence from a character iterable */ def fromIterable[T](source: Iterable[T]): PagedSeq[T] = - fromIterator(source.elements) + fromIterator(source.iterator) /** Constructs a character sequence from a string iterator */ def fromStrings(source: Iterator[String]): PagedSeq[Char] = { @@ -55,7 +55,7 @@ object PagedSeq { /** Constructs a character sequence from a string iterable */ def fromStrings(source: Iterable[String]): PagedSeq[Char] = - fromStrings(source.elements) + fromStrings(source.iterator) /** Constructs a character sequence from a line iterator * Lines do not contain trailing `\n' characters; The method inserts @@ -77,7 +77,7 @@ object PagedSeq { * a line separator `\n' between any two lines in the sequence. */ def fromLines(source: Iterable[String]): PagedSeq[Char] = - fromLines(source.elements) + fromLines(source.iterator) /** Constructs a character sequence from an input reader */ @@ -180,7 +180,7 @@ class PagedSeq[T] protected (more: (Array[T], Int, Int) => Int, /** Convert sequence to string */ override def toString = { val buf = new StringBuilder - for (ch <- elements) buf append ch + for (ch <- PagedSeq.this.iterator) buf append ch buf.toString } } diff --git a/src/library/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala index f7d2da9a09..dd61c2271c 100644 --- a/src/library/scala/collection/immutable/Queue.scala +++ b/src/library/scala/collection/immutable/Queue.scala @@ -29,7 +29,7 @@ object Queue { class Queue[+A](elem: A*) extends Seq[A] { protected val in: List[A] = Nil - protected val out: List[A] = elem.elements.toList + protected val out: List[A] = elem.iterator.toList protected def mkQueue[A](i: List[A], o: List[A]): Queue[A] = new Queue[A]() { @@ -56,7 +56,7 @@ class Queue[+A](elem: A*) extends Seq[A] { /** Returns the elements in the list as an iterator */ - override def elements: Iterator[A] = (out ::: in.reverse).elements + override def iterator: Iterator[A] = (out ::: in.reverse).iterator /** Checks if the queue is empty. * @@ -96,7 +96,7 @@ class Queue[+A](elem: A*) extends Seq[A] { */ @deprecated def +[B >: A](iter: Iterable[B]) = { var q: List[B] = in - iter.elements.foreach(e => q = e :: q) + iter.iterator.foreach(e => q = e :: q) mkQueue(q, out) } @@ -110,7 +110,7 @@ class Queue[+A](elem: A*) extends Seq[A] { */ def enqueue[B >: A](iter: Iterable[B]) = { var q: List[B] = in - iter.elements.foreach(e => q = e :: q) + iter.iterator.foreach(e => q = e :: q) mkQueue(q, out) } diff --git a/src/library/scala/collection/immutable/RedBlack.scala b/src/library/scala/collection/immutable/RedBlack.scala index c50dba65f5..a13250363d 100644 --- a/src/library/scala/collection/immutable/RedBlack.scala +++ b/src/library/scala/collection/immutable/RedBlack.scala @@ -32,7 +32,8 @@ abstract class RedBlack[A] { /** @deprecated use foreach instead */ @deprecated def visit[T](input : T)(f : (T,A,B) => Tuple2[Boolean,T]) : Tuple2[Boolean,T]; def toStream: Stream[(A,B)] - def elements: Iterator[Pair[A, B]] + def iterator: Iterator[(A, B)] + @deprecated def elements = iterator def upd[B1 >: B](k: A, v: B1): Tree[B1] def del(k: A): Tree[B] def smallest: NonEmpty[B] @@ -87,8 +88,8 @@ abstract class RedBlack[A] { def toStream: Stream[(A,B)] = left.toStream append Stream((key,value)) append right.toStream - def elements: Iterator[Pair[A, B]] = - left.elements append Iterator.single(Pair(key, value)) append right.elements + def iterator: Iterator[(A, B)] = + left.iterator append Iterator.single(Pair(key, value)) append right.iterator def foreach[U](f: (A, B) => U) { left foreach f @@ -129,7 +130,7 @@ abstract class RedBlack[A] { def upd[B](k: A, v: B): Tree[B] = RedTree(k, v, Empty, Empty) def del(k: A): Tree[Nothing] = this def smallest: NonEmpty[Nothing] = throw new NoSuchElementException("empty map") - def elements: Iterator[Pair[A, Nothing]] = Iterator.empty + def iterator: Iterator[(A, Nothing)] = Iterator.empty def toStream: Stream[(A,Nothing)] = Stream.empty def foreach[U](f: (A, Nothing) => U) {} diff --git a/src/library/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala index 78aaa54f1c..8acf786358 100644 --- a/src/library/scala/collection/immutable/Set.scala +++ b/src/library/scala/collection/immutable/Set.scala @@ -17,7 +17,7 @@ import generic._ * have to provide functionality for the abstract methods in Set: * * def contains(elem: A): Boolean - * def elements: Iterator[A] + * def iterator: Iterator[A] * def + (elem: A): This * def - (elem: A): This * @@ -48,7 +48,8 @@ object Set extends SetFactory[Set] { def contains(elem: A): Boolean = false def + (elem: A): Set[A] = new Set1(elem) def - (elem: A): Set[A] = this - def elements: Iterator[A] = Iterator.empty + def iterator: Iterator[A] = Iterator.empty + @deprecated def elements = iterator override def foreach[U](f: A => U): Unit = {} } @@ -64,8 +65,9 @@ object Set extends SetFactory[Set] { def - (elem: A): Set[A] = if (elem == elem1) new EmptySet[A] else this - def elements: Iterator[A] = + def iterator: Iterator[A] = Iterator(elem1) + @deprecated def elements = iterator override def foreach[U](f: A => U): Unit = { f(elem1) } @@ -84,8 +86,9 @@ object Set extends SetFactory[Set] { if (elem == elem1) new Set1(elem2) else if (elem == elem2) new Set1(elem1) else this - def elements: Iterator[A] = + def iterator: Iterator[A] = Iterator(elem1, elem2) + @deprecated def elements = iterator override def foreach[U](f: A => U): Unit = { f(elem1); f(elem2) } @@ -105,8 +108,9 @@ object Set extends SetFactory[Set] { else if (elem == elem2) new Set2(elem1, elem3) else if (elem == elem3) new Set2(elem1, elem2) else this - def elements: Iterator[A] = + def iterator: Iterator[A] = Iterator(elem1, elem2, elem3) + @deprecated def elements = iterator override def foreach[U](f: A => U): Unit = { f(elem1); f(elem2); f(elem3) } @@ -127,8 +131,9 @@ object Set extends SetFactory[Set] { else if (elem == elem3) new Set3(elem1, elem2, elem4) else if (elem == elem4) new Set3(elem1, elem2, elem3) else this - def elements: Iterator[A] = + def iterator: Iterator[A] = Iterator(elem1, elem2, elem3, elem4) + @deprecated def elements = iterator override def foreach[U](f: A => U): Unit = { f(elem1); f(elem2); f(elem3); f(elem4) } diff --git a/src/library/scala/collection/immutable/Stack.scala b/src/library/scala/collection/immutable/Stack.scala index 7be6635853..04e9251bec 100644 --- a/src/library/scala/collection/immutable/Stack.scala +++ b/src/library/scala/collection/immutable/Stack.scala @@ -105,7 +105,7 @@ class Stack[+A] extends Sequence[A] { * * @return an iterator over all stack elements. */ - override def elements: Iterator[A] = new Iterator[A] { + override def iterator: Iterator[A] = new Iterator[A] { private var cur = Stack.this def hasNext: Boolean = !cur.isEmpty def next: A = { val r = top; cur = cur.pop; r } diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala index 7b5e3f7659..538e9d85fe 100644 --- a/src/library/scala/collection/immutable/Stream.scala +++ b/src/library/scala/collection/immutable/Stream.scala @@ -184,7 +184,7 @@ self => * @param p the predicate used to filter the stream. * @return the elements of this stream satisfying <code>p</code>. */ - override def partition(p: A => Boolean): (Stream[A], Stream[A]) = (filter(p(_)), remove(p(_))) + override def partition(p: A => Boolean): (Stream[A], Stream[A]) = (filter(p(_)), filterNot(p(_))) /** Returns a stream formed from this stream and the specified stream * <code>that</code> by associating each element of the former with @@ -200,7 +200,7 @@ self => def loop(these: Stream[A], elems2: Iterator[B]): Stream[(A1, B)] = if (these.isEmpty || !elems2.hasNext) Stream.Empty else new Stream.Cons((these.head, elems2.next), loop(these.tail, elems2)) - if (bf.isInstanceOf[Stream.StreamBuilderFactory[_]]) loop(this, that.elements).asInstanceOf[That] + if (bf.isInstanceOf[Stream.StreamBuilderFactory[_]]) loop(this, that.iterator).asInstanceOf[That] else super.zip[A1, B, That](that) } @@ -378,7 +378,7 @@ object Stream extends SequenceFactory[Stream] { * this builder should be bypassed. */ class StreamBuilder[A] extends LazyBuilder[A, Stream[A]] { - def result: Stream[A] = (for (xs <- parts.elements; x <- xs.toIterable.elements) yield x).toStream + def result: Stream[A] = (for (xs <- parts.iterator; x <- xs.toIterable.iterator) yield x).toStream } object Empty extends Stream[Nothing] { @@ -507,7 +507,7 @@ object Stream extends SequenceFactory[Stream] { /** The concatenation of a sequence of streams * @deprecated use xs.flatten instead */ - def concat[A](xs: Iterable[Stream[A]]): Stream[A] = concat(xs.elements) + def concat[A](xs: Iterable[Stream[A]]): Stream[A] = concat(xs.iterator) /** The concatenation of all streams returned by an iterator * @deprecated use xs.toStream.flatten instead diff --git a/src/library/scala/collection/immutable/TreeHashMap.scala b/src/library/scala/collection/immutable/TreeHashMap.scala index 780a69dfde..1b45a8b5b8 100644 --- a/src/library/scala/collection/immutable/TreeHashMap.scala +++ b/src/library/scala/collection/immutable/TreeHashMap.scala @@ -36,7 +36,7 @@ object TreeHashMap { * @author David MacIver */ class TreeHashMap[Key, +Value] private (private val underlying : IntMap[AssocMap[Key, Value]]) extends scala.collection.immutable.Map[Key, Value]{ - def elements : Iterator[(Key, Value)] = new Iterator[(Key, Value)]{ + def iterator : Iterator[(Key, Value)] = new Iterator[(Key, Value)]{ val assocIt = new AssocMapIterator(AssocMap.empty[Key, Value]); val intIterator = underlying.values; @@ -182,7 +182,9 @@ private[collection] sealed abstract class AssocMap[Key, +Value] extends immutabl case Nil() => AssocMap.empty; } - def elements : Iterator[(Key, Value)] = new AssocMapIterator(this); + def iterator : Iterator[(Key, Value)] = new AssocMapIterator(this) + + @deprecated def elements = iterator override final def foreach[U](f : ((Key, Value)) => U) = this match { case Cons(key, value, tail) => { f((key, value)); tail.foreach(f); } diff --git a/src/library/scala/collection/immutable/TreeMap.scala b/src/library/scala/collection/immutable/TreeMap.scala index 2298a64ba7..cff70586ab 100644 --- a/src/library/scala/collection/immutable/TreeMap.scala +++ b/src/library/scala/collection/immutable/TreeMap.scala @@ -112,7 +112,7 @@ class TreeMap[A, +B](override val size: Int, t: RedBlack[A]#Tree[B])(implicit va * * @return the new iterator */ - def elements: Iterator[(A, B)] = tree.toStream.elements + def iterator: Iterator[(A, B)] = tree.toStream.iterator override def toStream: Stream[(A, B)] = tree.toStream diff --git a/src/library/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala index 0f352356b8..93faa59b45 100644 --- a/src/library/scala/collection/immutable/TreeSet.scala +++ b/src/library/scala/collection/immutable/TreeSet.scala @@ -82,7 +82,9 @@ class TreeSet[A <% Ordered[A]](override val size: Int, t: RedBlack[A]#Tree[Unit] * * @return the new iterator */ - def elements: Iterator[A] = tree.toStream.elements map (_._1) + def iterator: Iterator[A] = tree.toStream.iterator map (_._1) + + @deprecated def elements = iterator override def toStream: Stream[A] = tree.toStream map (_._1) |