Skip to content

Commit 83c9cef

Browse files
authored
Merge pull request #287 from lavrov/master
Add filterKeys extension method to MapView
2 parents 9fdf357 + db1d09b commit 83c9cef

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

compat/src/main/scala-2.11_2.12/scala/collection/compat/PackageShared.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,12 @@ class TraversableExtensionMethods[A](private val self: c.Traversable[A]) extends
246246
class MapViewExtensionMethods[K, V, C <: scala.collection.Map[K, V]](
247247
private val self: IterableView[(K, V), C])
248248
extends AnyVal {
249+
249250
def mapValues[W, That](f: V => W)(
250251
implicit bf: CanBuildFrom[IterableView[(K, V), C], (K, W), That]): That =
251252
self.map[(K, W), That] { case (k, v) => (k, f(v)) }
253+
254+
def filterKeys[That](p: K => Boolean)(
255+
implicit bf: CanBuildFrom[IterableView[(K, V), C], (K, V), That]): That =
256+
self.collect[(K, V), That] { case (k, v) if p(k) => (k, v) }
252257
}

compat/src/test/scala/test/scala/collection/ViewTest.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,12 @@ class ViewTest {
2727
assertEquals(oldStyle.toMap, newStyle.toMap)
2828
}
2929

30+
@Test
31+
def filterKeys: Unit = {
32+
val m = Map("a" -> 1, "b" -> 2, "c" -> 3)
33+
val oldStyle = m.filterKeys(_ > "a")
34+
val newStyle = m.view.filterKeys(_ > "a")
35+
assertEquals(oldStyle.toMap, newStyle.toMap)
36+
}
37+
3038
}

0 commit comments

Comments
 (0)