@@ -388,12 +388,14 @@ extends AbstractMap[Long, V]
388
388
nextPair = anotherPair
389
389
anotherPair = null
390
390
}
391
- nextPair = null
391
+ else nextPair = null
392
392
ans
393
393
}
394
394
}
395
395
396
396
override def foreach [A ](f : ((Long ,V )) => A ) {
397
+ if ((extraKeys & 1 ) == 1 ) f((0L , zeroValue.asInstanceOf [V ]))
398
+ if ((extraKeys & 2 ) == 2 ) f((Long .MinValue , minValue.asInstanceOf [V ]))
397
399
var i,j = 0
398
400
while (i < _keys.length & j < _size) {
399
401
val k = _keys(i)
@@ -403,8 +405,6 @@ extends AbstractMap[Long, V]
403
405
}
404
406
i += 1
405
407
}
406
- if ((extraKeys & 1 ) == 1 ) f((0L , zeroValue.asInstanceOf [V ]))
407
- if ((extraKeys & 2 ) == 2 ) f((Long .MinValue , minValue.asInstanceOf [V ]))
408
408
}
409
409
410
410
override def clone (): LongMap [V ] = {
@@ -417,6 +417,8 @@ extends AbstractMap[Long, V]
417
417
418
418
/** Applies a function to all keys of this map. */
419
419
def foreachKey [A ](f : Long => A ) {
420
+ if ((extraKeys & 1 ) == 1 ) f(0L )
421
+ if ((extraKeys & 2 ) == 2 ) f(Long .MinValue )
420
422
var i,j = 0
421
423
while (i < _keys.length & j < _size) {
422
424
val k = _keys(i)
@@ -426,12 +428,12 @@ extends AbstractMap[Long, V]
426
428
}
427
429
i += 1
428
430
}
429
- if ((extraKeys & 1 ) == 1 ) f(0L )
430
- if ((extraKeys & 2 ) == 2 ) f(Long .MinValue )
431
431
}
432
432
433
433
/** Applies a function to all values of this map. */
434
434
def foreachValue [A ](f : V => A ) {
435
+ if ((extraKeys & 1 ) == 1 ) f(zeroValue.asInstanceOf [V ])
436
+ if ((extraKeys & 2 ) == 2 ) f(minValue.asInstanceOf [V ])
435
437
var i,j = 0
436
438
while (i < _keys.length & j < _size) {
437
439
val k = _keys(i)
@@ -441,15 +443,15 @@ extends AbstractMap[Long, V]
441
443
}
442
444
i += 1
443
445
}
444
- if ((extraKeys & 1 ) == 1 ) f(zeroValue.asInstanceOf [V ])
445
- if ((extraKeys & 2 ) == 2 ) f(minValue.asInstanceOf [V ])
446
446
}
447
447
448
448
/** Creates a new `LongMap` with different values.
449
449
* Unlike `mapValues`, this method generates a new
450
450
* collection immediately.
451
451
*/
452
452
def mapValuesNow [V1 ](f : V => V1 ): LongMap [V1 ] = {
453
+ val zv = if ((extraKeys & 1 ) == 1 ) f(zeroValue.asInstanceOf [V ]).asInstanceOf [AnyRef ] else null
454
+ val mv = if ((extraKeys & 2 ) == 2 ) f(minValue.asInstanceOf [V ]).asInstanceOf [AnyRef ] else null
453
455
val lm = new LongMap [V1 ](LongMap .exceptionDefault, 1 , false )
454
456
val kz = java.util.Arrays .copyOf(_keys, _keys.length)
455
457
val vz = new Array [AnyRef ](_values.length)
@@ -462,8 +464,6 @@ extends AbstractMap[Long, V]
462
464
}
463
465
i += 1
464
466
}
465
- val zv = if ((extraKeys & 1 ) == 1 ) f(zeroValue.asInstanceOf [V ]).asInstanceOf [AnyRef ] else null
466
- val mv = if ((extraKeys & 2 ) == 2 ) f(minValue.asInstanceOf [V ]).asInstanceOf [AnyRef ] else null
467
467
lm.initializeTo(mask, extraKeys, zv, mv, _size, _vacant, kz, vz)
468
468
lm
469
469
}
@@ -472,6 +472,8 @@ extends AbstractMap[Long, V]
472
472
* Note: the default, if any, is not transformed.
473
473
*/
474
474
def transformValues (f : V => V ): this .type = {
475
+ if ((extraKeys & 1 ) == 1 ) zeroValue = f(zeroValue.asInstanceOf [V ]).asInstanceOf [AnyRef ]
476
+ if ((extraKeys & 2 ) == 2 ) minValue = f(minValue.asInstanceOf [V ]).asInstanceOf [AnyRef ]
475
477
var i,j = 0
476
478
while (i < _keys.length & j < _size) {
477
479
val k = _keys(i)
@@ -481,26 +483,8 @@ extends AbstractMap[Long, V]
481
483
}
482
484
i += 1
483
485
}
484
- if ((extraKeys & 1 ) == 1 ) zeroValue = f(zeroValue.asInstanceOf [V ]).asInstanceOf [AnyRef ]
485
- if ((extraKeys & 2 ) == 2 ) minValue = f(minValue.asInstanceOf [V ]).asInstanceOf [AnyRef ]
486
486
this
487
487
}
488
-
489
- /*
490
- override def toString = {
491
- val sb = new StringBuilder("LongMap(")
492
- var n = 0
493
- foreach{ case (k,v) =>
494
- if (n > 0) sb ++= ", "
495
- sb ++= k.toString
496
- sb ++= " -> "
497
- sb ++= v.toString
498
- n += 1
499
- }
500
- sb += ')'
501
- sb.result
502
- }
503
- */
504
488
}
505
489
506
490
object LongMap {
0 commit comments