diff options
author | Aleksandar Prokopec <axel22@gmail.com> | 2012-06-06 20:16:39 +0200 |
---|---|---|
committer | Aleksandar Prokopec <axel22@gmail.com> | 2012-06-06 20:16:39 +0200 |
commit | daca24d8e7050eab9551b123cef010d7bf33f803 (patch) | |
tree | ba69ecd42e915de29a31ba9df50c2fb52bab69b5 /src/library | |
parent | db1b777372a6883f9c474159804b8f7798c0ec49 (diff) | |
download | scala-daca24d8e7050eab9551b123cef010d7bf33f803.tar.gz scala-daca24d8e7050eab9551b123cef010d7bf33f803.tar.bz2 scala-daca24d8e7050eab9551b123cef010d7bf33f803.zip |
Fix SI-5880.
Add a ChiSquare test for the new hash code.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/collection/convert/Wrappers.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/library/scala/collection/convert/Wrappers.scala b/src/library/scala/collection/convert/Wrappers.scala index b1b48b760f..6c66ac6c4d 100644 --- a/src/library/scala/collection/convert/Wrappers.scala +++ b/src/library/scala/collection/convert/Wrappers.scala @@ -171,7 +171,13 @@ private[collection] trait Wrappers { var prev : Option[A] = None def hasNext = ui.hasNext - + + def improve(hc: Int) = { + var i = hc * 0x9e3775cd + i = java.lang.Integer.reverseBytes(i) + i * 0x9e3775c + } + def next() = { val (k, v) = ui.next prev = Some(k) @@ -179,7 +185,7 @@ private[collection] trait Wrappers { def getKey = k def getValue = v def setValue(v1 : B) = self.put(k, v1) - override def hashCode = k.hashCode + v.hashCode + override def hashCode = improve(k.hashCode) + (improve(v.hashCode) << 16) override def equals(other: Any) = other match { case e: ju.Map.Entry[_, _] => k == e.getKey && v == e.getValue case _ => false |