Skip to content
This repository was archived by the owner on Dec 22, 2021. It is now read-only.

Commit 9f4f6f6

Browse files
committed
Optimize knownSize of small Maps
1 parent 853ac57 commit 9f4f6f6

File tree

1 file changed

+9
-4
lines changed
  • collections/src/main/scala/strawman/collection/immutable

1 file changed

+9
-4
lines changed

collections/src/main/scala/strawman/collection/immutable/Map.scala

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ object Map extends MapFactory[Map] {
183183

184184
private object EmptyMap extends Map[Any, Nothing] with SmallMap[Any, Nothing] with Serializable {
185185
override def size: Int = 0
186+
override def knownSize: Int = 0
186187
override def apply(key: Any) = throw new NoSuchElementException("key not found: " + key)
187188
override def contains(key: Any) = false
188189
def get(key: Any): Option[Nothing] = None
@@ -192,7 +193,8 @@ object Map extends MapFactory[Map] {
192193
}
193194

194195
final class Map1[K, +V](key1: K, value1: V) extends Map[K, V] with SmallMap[K, V] with Serializable {
195-
override def size = 1
196+
override def size: Int = 1
197+
override def knownSize: Int = 1
196198
override def apply(key: K) = if (key == key1) value1 else throw new NoSuchElementException("key not found: " + key)
197199
override def contains(key: K) = key == key1
198200
def get(key: K): Option[V] =
@@ -209,7 +211,8 @@ object Map extends MapFactory[Map] {
209211
}
210212

211213
final class Map2[K, +V](key1: K, value1: V, key2: K, value2: V) extends Map[K, V] with SmallMap[K, V] with Serializable {
212-
override def size = 2
214+
override def size: Int = 2
215+
override def knownSize: Int = 2
213216
override def apply(key: K) =
214217
if (key == key1) value1
215218
else if (key == key2) value2
@@ -234,7 +237,8 @@ object Map extends MapFactory[Map] {
234237
}
235238

236239
class Map3[K, +V](key1: K, value1: V, key2: K, value2: V, key3: K, value3: V) extends Map[K, V] with SmallMap[K, V] with Serializable {
237-
override def size = 3
240+
override def size: Int = 3
241+
override def knownSize: Int = 3
238242
override def apply(key: K) =
239243
if (key == key1) value1
240244
else if (key == key2) value2
@@ -263,7 +267,8 @@ object Map extends MapFactory[Map] {
263267
}
264268

265269
final class Map4[K, +V](key1: K, value1: V, key2: K, value2: V, key3: K, value3: V, key4: K, value4: V) extends Map[K, V] with SmallMap[K, V] with Serializable {
266-
override def size = 4
270+
override def size: Int = 4
271+
override def knownSize: Int = 4
267272
override def apply(key: K) =
268273
if (key == key1) value1
269274
else if (key == key2) value2

0 commit comments

Comments
 (0)