java是从一个映射中获取所有值的最快方法,其中键以某个表达式开头
认为你有一个^ {CD1>}。
给定表达式"some.string.*"
,我必须从myMap
中检索所有值,其键以该表达式开头
我试图避免for loop
,因为myMap
将被赋予一组表达式,而不仅仅是一个表达式,并且对每个表达式使用for loop
会导致性能方面的麻烦
最快的方法是什么
你可以在下面搜索框中键入要查询的问题!
认为你有一个^ {CD1>}。
给定表达式"some.string.*"
,我必须从myMap
中检索所有值,其键以该表达式开头
我试图避免for loop
,因为myMap
将被赋予一组表达式,而不仅仅是一个表达式,并且对每个表达式使用for loop
会导致性能方面的麻烦
最快的方法是什么
# 1 楼答案
我最近写了一篇
MapFilter
就是为了满足这样的需求。您还可以过滤过滤后的贴图,这会使它们变得非常有用如果表达式有公共根,比如“some.byte”和“some.string”,那么首先按公共根(“some”)过滤在这种情况下)将为您节省大量时间。参见
main
了解一些简单的例子请注意,更改过滤后的贴图会更改基础贴图
# 2 楼答案
如果使用NavigableMap(例如TreeMap),可以利用底层树数据结构的优点,并执行类似的操作(具有
O(lg(N))
复杂性):更多扩展示例:
输出为: