diff options
author | Erik Erlandson <eerlands@redhat.com> | 2014-09-04 11:10:13 -0700 |
---|---|---|
committer | Erik Erlandson <eerlands@redhat.com> | 2014-10-21 19:06:41 -0700 |
commit | 59438d0647995f75bd1bf7159a248340d3708abd (patch) | |
tree | d1dd426ce8266ca117ab87523c89ecc1bd3d09e9 /src | |
parent | 850899b1c9347e804763a258f64d54cef0ffd69a (diff) | |
download | scala-59438d0647995f75bd1bf7159a248340d3708abd.tar.gz scala-59438d0647995f75bd1bf7159a248340d3708abd.tar.bz2 scala-59438d0647995f75bd1bf7159a248340d3708abd.zip |
SI-8835 Fix implementation of Iterator drop to remove quadratic behavior
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/collection/Iterator.scala | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/library/scala/collection/Iterator.scala b/src/library/scala/collection/Iterator.scala index 660cc5a42a..0115cc154c 100644 --- a/src/library/scala/collection/Iterator.scala +++ b/src/library/scala/collection/Iterator.scala @@ -320,7 +320,14 @@ trait Iterator[+A] extends TraversableOnce[A] { * it omits the first `n` values. * @note Reuse: $consumesAndProducesIterator */ - def drop(n: Int): Iterator[A] = slice(n, Int.MaxValue) + def drop(n: Int): Iterator[A] = { + var j = 0 + while (j < n && this.hasNext) { + this.next + j += 1 + } + this + } /** Creates an iterator returning an interval of the values produced by this iterator. * |