@@ -99,7 +99,7 @@ object Map extends ImmutableMapFactory[Map] {
99
99
}
100
100
101
101
@ SerialVersionUID (- 5626373049574850357L )
102
- private object EmptyMap extends AbstractMap [Any , Nothing ] with Map [Any , Nothing ] with Serializable {
102
+ private object EmptyMap extends AbstractMap [Any , Nothing ] with Map [Any , Nothing ] with Serializable with HasForeachEntry [ Any , Nothing ] {
103
103
override def size : Int = 0
104
104
override def apply (key : Any ) = throw new NoSuchElementException (" key not found: " + key)
105
105
override def contains (key : Any ) = false
@@ -110,10 +110,11 @@ object Map extends ImmutableMapFactory[Map] {
110
110
def + [V1 ](kv : (Any , V1 )): Map [Any , V1 ] = updated(kv._1, kv._2)
111
111
def - (key : Any ): Map [Any , Nothing ] = this
112
112
override def hashCode : Int = MurmurHash3 .emptyMapHash
113
+ override private [immutable] def foreachEntry [U ](f : (Any , Nothing ) => U ): Unit = ()
113
114
}
114
115
115
116
@ SerialVersionUID (- 9131943191104946031L )
116
- class Map1 [K , + V ](key1 : K , value1 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable {
117
+ class Map1 [K , + V ](key1 : K , value1 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable with HasForeachEntry [ K , V ] {
117
118
override def size = 1
118
119
override def apply (key : K ) = if (key == key1) value1 else throw new NoSuchElementException (" key not found: " + key)
119
120
override def contains (key : K ) = key == key1
@@ -148,10 +149,13 @@ object Map extends ImmutableMapFactory[Map] {
148
149
h = MurmurHash3 .mixLast(h, c)
149
150
MurmurHash3 .finalizeHash(h, N )
150
151
}
152
+ override private [immutable] def foreachEntry [U ](f : (K , V ) => U ): Unit = {
153
+ f(key1, value1)
154
+ }
151
155
}
152
156
153
157
@ SerialVersionUID (- 85684685400398742L )
154
- class Map2 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable {
158
+ class Map2 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable with HasForeachEntry [ K , V ] {
155
159
override def size = 2
156
160
override def apply (key : K ) =
157
161
if (key == key1) value1
@@ -201,10 +205,14 @@ object Map extends ImmutableMapFactory[Map] {
201
205
h = MurmurHash3 .mixLast(h, c)
202
206
MurmurHash3 .finalizeHash(h, N )
203
207
}
208
+ override private [immutable] def foreachEntry [U ](f : (K , V ) => U ): Unit = {
209
+ f(key1, value1)
210
+ f(key2, value2)
211
+ }
204
212
}
205
213
206
214
@ SerialVersionUID (- 6400718707310517135L )
207
- class Map3 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable {
215
+ class Map3 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable with HasForeachEntry [ K , V ] {
208
216
override def size = 3
209
217
override def apply (key : K ) =
210
218
if (key == key1) value1
@@ -264,10 +272,15 @@ object Map extends ImmutableMapFactory[Map] {
264
272
h = MurmurHash3 .mixLast(h, c)
265
273
MurmurHash3 .finalizeHash(h, N )
266
274
}
275
+ override private [immutable] def foreachEntry [U ](f : (K , V ) => U ): Unit = {
276
+ f(key1, value1)
277
+ f(key2, value2)
278
+ f(key3, value3)
279
+ }
267
280
}
268
281
269
282
@ SerialVersionUID (- 7992135791595275193L )
270
- class Map4 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V , key4 : K , value4 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable {
283
+ class Map4 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V , key4 : K , value4 : V ) extends AbstractMap [K , V ] with Map [K , V ] with Serializable with HasForeachEntry [ K , V ] {
271
284
override def size = 4
272
285
override def apply (key : K ) =
273
286
if (key == key1) value1
@@ -337,6 +350,12 @@ object Map extends ImmutableMapFactory[Map] {
337
350
h = MurmurHash3 .mixLast(h, c)
338
351
MurmurHash3 .finalizeHash(h, N )
339
352
}
353
+ override private [immutable] def foreachEntry [U ](f : (K , V ) => U ): Unit = {
354
+ f(key1, value1)
355
+ f(key2, value2)
356
+ f(key3, value3)
357
+ f(key4, value4)
358
+ }
340
359
}
341
360
private [immutable] final class HashCodeAccumulator extends scala.runtime.AbstractFunction2 [Any , Any , Unit ] {
342
361
import scala .util .hashing .MurmurHash3
0 commit comments