需要任何关于如何将限制定义为谷歌番石榴库提供的 Maps.filterKeys 方法的参数的输入,以便一旦达到限制,就无需进一步迭代。
我有以下要求,我有地图和谓词(在这种情况下是过滤器)。
如下所示 Maps.filterKeys(myMap, myPredicate);
map有大约5000个键,我想要的值一旦谓词被满足一定次数。我不想迭代更多,而是返回过滤后的 Map。
有什么出路吗,或者我们需要要求番石榴团队添加与输入参数相同的参数。
Maps.filterKeys().
中有 0 次迭代正在进行 javadoc 解释道:
返回一个映射,其中包含
unfiltered
中的映射,其键 满足谓词。返回的地图是unfiltered
的实时视图; 对一个的更改会影响另一个。
因此,它不会返回地图的过滤副本,而是返回过滤后的视图。
如果你想要一个过滤的副本,那么你必须迭代过滤地图的 entrySet() 并填充一个新的,直到达到你的限制。
据我所知,类 Maps 中的 filterKeys 方法都返回一个 map 实现,该实现只是指定映射的装饰器,然后使用指定的谓词进行过滤。没有完成迭代过程。您必须显式迭代映射条目,以便您可以(并且必须)自己实现该行为。