我们是否可以通过Guava库中提供的Maps.filteKey / Value方法实现类似于数据库的限制功能

时间:2013-12-18 06:46:23

标签: java performance guava

我们需要输入关于如何将限制作为参数定义为Google Guava Library提供的Maps.filterKeys方法的任何输入,这样一旦达到限制,就不需要迭代了。

我有以下要求,我有Map和Predicate(在这种情况下是过滤器)。

如下Maps.filterKeys(myMap,myPredicate);

一旦谓词满足一定次数,地图就有大约5000个键值,我想要的值。我不想迭代更多而是返回filteredMap。

是否有任何出路或我们需要让番石榴团队添加相同的输入参数。

2 个答案:

答案 0 :(得分:2)

Maps.filterKeys(). The javadoc中有0次迭代解释:

  

返回包含unfiltered中键的映射的映射   满足谓词。返回的地图是unfiltered的实时视图;   改变为一个影响另一个。

因此,它不会返回地图的过滤副本,而是返回过滤后的视图。

如果你想要一个过滤后的副本,那么你必须遍历过滤后的地图的entrySet()并填写一个新的,直到达到你的限制。

答案 1 :(得分:1)

据我所知,类Maps中的filterKeys方法都返回一个map实现,它只是指定map的装饰器,然后使用指定的谓词进行过滤。没有完成迭代过程。您必须在地图条目上明确地迭代自己,这样您就可以(并且必须)自己实施该行为。