我们需要输入关于如何将限制作为参数定义为Google Guava Library提供的Maps.filterKeys方法的任何输入,这样一旦达到限制,就不需要迭代了。
我有以下要求,我有Map和Predicate(在这种情况下是过滤器)。
如下Maps.filterKeys(myMap,myPredicate);
一旦谓词满足一定次数,地图就有大约5000个键值,我想要的值。我不想迭代更多而是返回filteredMap。
是否有任何出路或我们需要让番石榴团队添加相同的输入参数。
答案 0 :(得分:2)
Maps.filterKeys().
The javadoc中有0次迭代解释:
返回包含
unfiltered
中键的映射的映射 满足谓词。返回的地图是unfiltered
的实时视图; 改变为一个影响另一个。
因此,它不会返回地图的过滤副本,而是返回过滤后的视图。
如果你想要一个过滤后的副本,那么你必须遍历过滤后的地图的entrySet()并填写一个新的,直到达到你的限制。
答案 1 :(得分:1)
据我所知,类Maps中的filterKeys方法都返回一个map实现,它只是指定map的装饰器,然后使用指定的谓词进行过滤。没有完成迭代过程。您必须在地图条目上明确地迭代自己,这样您就可以(并且必须)自己实施该行为。