@@ -253,6 +253,10 @@ object Map extends MapFactory[Map] {
253
253
override def foreach [U ](f : ((K , V )) => U ): Unit = {
254
254
f((key1, value1))
255
255
}
256
+ override def exists (p : ((K , V )) => Boolean ): Boolean = p((key1, value1))
257
+ override def forall (p : ((K , V )) => Boolean ): Boolean = p((key1, value1))
258
+ override protected [collection] def filterImpl (pred : ((K , V )) => Boolean , isFlipped : Boolean ): Map [K , V ] =
259
+ if (pred((key1, value1)) != isFlipped) this else Map .empty
256
260
override def transform [W ](f : (K , V ) => W ): Map [K , W ] = {
257
261
val walue1 = f(key1, value1)
258
262
if (walue1.asInstanceOf [AnyRef ] eq value1.asInstanceOf [AnyRef ]) this .asInstanceOf [Map [K , W ]]
@@ -330,6 +334,21 @@ object Map extends MapFactory[Map] {
330
334
override def foreach [U ](f : ((K , V )) => U ): Unit = {
331
335
f((key1, value1)); f((key2, value2))
332
336
}
337
+ override def exists (p : ((K , V )) => Boolean ): Boolean = p((key1, value1)) || p((key2, value2))
338
+ override def forall (p : ((K , V )) => Boolean ): Boolean = p((key1, value1)) && p((key2, value2))
339
+ override protected [collection] def filterImpl (pred : ((K , V )) => Boolean , isFlipped : Boolean ): Map [K , V ] = {
340
+ var k1 = null .asInstanceOf [K ]
341
+ var v1 = null .asInstanceOf [V ]
342
+ var n = 0
343
+ if (pred((key1, value1)) != isFlipped) { {k1 = key1; v1 = value1}; n += 1 }
344
+ if (pred((key2, value2)) != isFlipped) { if (n == 0 ) {k1 = key2; v1 = value2}; n += 1 }
345
+
346
+ n match {
347
+ case 0 => Map .empty
348
+ case 1 => new Map1 (k1, v1)
349
+ case 2 => this
350
+ }
351
+ }
333
352
override def transform [W ](f : (K , V ) => W ): Map [K , W ] = {
334
353
val walue1 = f(key1, value1)
335
354
val walue2 = f(key2, value2)
@@ -420,6 +439,23 @@ object Map extends MapFactory[Map] {
420
439
override def foreach [U ](f : ((K , V )) => U ): Unit = {
421
440
f((key1, value1)); f((key2, value2)); f((key3, value3))
422
441
}
442
+ override def exists (p : ((K , V )) => Boolean ): Boolean = p((key1, value1)) || p((key2, value2)) || p((key3, value3))
443
+ override def forall (p : ((K , V )) => Boolean ): Boolean = p((key1, value1)) && p((key2, value2)) && p((key3, value3))
444
+ override protected [collection] def filterImpl (pred : ((K , V )) => Boolean , isFlipped : Boolean ): Map [K , V ] = {
445
+ var k1, k2 = null .asInstanceOf [K ]
446
+ var v1, v2 = null .asInstanceOf [V ]
447
+ var n = 0
448
+ if (pred((key1, value1)) != isFlipped) { { k1 = key1; v1 = value1 }; n += 1 }
449
+ if (pred((key2, value2)) != isFlipped) { if (n == 0 ) { k1 = key2; v1 = value2 } else { k2 = key2; v2 = value2 }; n += 1 }
450
+ if (pred((key3, value3)) != isFlipped) { if (n == 0 ) { k1 = key3; v1 = value3 } else if (n == 1 ) { k2 = key3; v2 = value3 }; n += 1 }
451
+
452
+ n match {
453
+ case 0 => Map .empty
454
+ case 1 => new Map1 (k1, v1)
455
+ case 2 => new Map2 (k1, v1, k2, v2)
456
+ case 3 => this
457
+ }
458
+ }
423
459
override def transform [W ](f : (K , V ) => W ): Map [K , W ] = {
424
460
val walue1 = f(key1, value1)
425
461
val walue2 = f(key2, value2)
@@ -525,6 +561,25 @@ object Map extends MapFactory[Map] {
525
561
override def foreach [U ](f : ((K , V )) => U ): Unit = {
526
562
f((key1, value1)); f((key2, value2)); f((key3, value3)); f((key4, value4))
527
563
}
564
+ override def exists (p : ((K , V )) => Boolean ): Boolean = p((key1, value1)) || p((key2, value2)) || p((key3, value3)) || p((key4, value4))
565
+ override def forall (p : ((K , V )) => Boolean ): Boolean = p((key1, value1)) && p((key2, value2)) && p((key3, value3)) && p((key4, value4))
566
+ override protected [collection] def filterImpl (pred : ((K , V )) => Boolean , isFlipped : Boolean ): Map [K , V ] = {
567
+ var k1, k2, k3 = null .asInstanceOf [K ]
568
+ var v1, v2, v3 = null .asInstanceOf [V ]
569
+ var n = 0
570
+ if (pred((key1, value1)) != isFlipped) { { k1 = key1; v1 = value1 }; n += 1 }
571
+ if (pred((key2, value2)) != isFlipped) { if (n == 0 ) { k1 = key2; v1 = value2 } else { k2 = key2; v2 = value2 }; n += 1 }
572
+ if (pred((key3, value3)) != isFlipped) { if (n == 0 ) { k1 = key3; v1 = value3 } else if (n == 1 ) { k2 = key3; v2 = value3 } else { k3 = key3; v3 = value3}; n += 1 }
573
+ if (pred((key4, value4)) != isFlipped) { if (n == 0 ) { k1 = key4; v1 = value4 } else if (n == 1 ) { k2 = key4; v2 = value4 } else if (n == 2 ) { k3 = key4; v3 = value4 }; n += 1 }
574
+
575
+ n match {
576
+ case 0 => Map .empty
577
+ case 1 => new Map1 (k1, v1)
578
+ case 2 => new Map2 (k1, v1, k2, v2)
579
+ case 3 => new Map3 (k1, v1, k2, v2, k3, v3)
580
+ case 4 => this
581
+ }
582
+ }
528
583
override def transform [W ](f : (K , V ) => W ): Map [K , W ] = {
529
584
val walue1 = f(key1, value1)
530
585
val walue2 = f(key2, value2)
0 commit comments