【发布时间】:2014-10-30 17:08:37
【问题描述】:
val m = Map("a"->2,"ab"->3,"c"->4)
scala> m.get("a");
scala> println(res.get)
2
scala> m.get(/a\.*/)
// or something similar.
我是否可以通过在键值中指定正则表达式这样简单的操作来获取键包含“a”的所有键值对的列表,而无需遍历整个映射?
提前致谢!
【问题讨论】:
val m = Map("a"->2,"ab"->3,"c"->4)
scala> m.get("a");
scala> println(res.get)
2
scala> m.get(/a\.*/)
// or something similar.
我是否可以通过在键值中指定正则表达式这样简单的操作来获取键包含“a”的所有键值对的列表,而无需遍历整个映射?
提前致谢!
【问题讨论】:
不,如果不遍历整个地图,您就无法做到这一点。事实上,我什至想不出一个单一的数据结构来支持它,更不用说 API。
当然,迭代非常简单:
m.filterKeys(_ matches "a.*")
【讨论】:
m.filterKeys(_ contains "a" ) 是更好的解决方案。
/a\*/ -- 假设他错过了星号之前的一个句点,否则,这个正则表达式将匹配所有字符串。