diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-01-13 10:10:34 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-01-13 10:10:34 -0800 |
commit | 503dfc54e9d1f30f6fd9fd0c4e3cd80aad6e2f1d (patch) | |
tree | b3f60ec3845650f1b08747d90d9c421866ab701e | |
parent | 40b5a4e6ed9681b1100f9971899b75f0b07d95d5 (diff) | |
parent | 973f69ac75507ec602f740b3c291ded2958ea87c (diff) | |
download | scala-503dfc54e9d1f30f6fd9fd0c4e3cd80aad6e2f1d.tar.gz scala-503dfc54e9d1f30f6fd9fd0c4e3cd80aad6e2f1d.tar.bz2 scala-503dfc54e9d1f30f6fd9fd0c4e3cd80aad6e2f1d.zip |
Merge pull request #3302 from Ichoran/issue/6364
Resolves SI-6364, O(n) performance of wrapped set contains.
-rw-r--r-- | src/library/scala/collection/convert/Wrappers.scala | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/library/scala/collection/convert/Wrappers.scala b/src/library/scala/collection/convert/Wrappers.scala index 56f1802509..14ae57c43a 100644 --- a/src/library/scala/collection/convert/Wrappers.scala +++ b/src/library/scala/collection/convert/Wrappers.scala @@ -102,8 +102,14 @@ private[collection] trait Wrappers { override def clone(): JListWrapper[A] = JListWrapper(new ju.ArrayList[A](underlying)) } + // Note various overrides to avoid performance gotchas. class SetWrapper[A](underlying: Set[A]) extends ju.AbstractSet[A] { self => + override def contains(o: Object): Boolean = { + try { underlying.contains(o.asInstanceOf[A]) } + catch { case cce: ClassCastException => false } + } + override def isEmpty = underlying.isEmpty def size = underlying.size def iterator = new ju.Iterator[A] { val ui = underlying.iterator |