我们能否从番石榴库中提供的 Maps.filteKey/Value 方法实现类似于数据库的限制功能



需要任何关于如何将限制定义为谷歌番石榴库提供的 Maps.filterKeys 方法的参数的输入,以便一旦达到限制,就无需进一步迭代。

有以下要求,我有地图和谓词(在这种情况下是过滤器)。

如下所示 Maps.filterKeys(myMap, myPredicate);

map有大约5000个键,我想要的值一旦谓词被满足一定次数。我不想迭代更多,而是返回过滤后的 Map。

有什么出路吗,或者我们需要要求番石榴团队添加与输入参数相同的参数。

Maps.filterKeys(). 中有 0 次迭代正在进行 javadoc 解释道:

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

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

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

据我所知,类 Maps 中的 filterKeys 方法都返回一个 map 实现,该实现只是指定映射的装饰器,然后使用指定的谓词进行过滤。没有完成迭代过程。您必须显式迭代映射条目,以便您可以(并且必须)自己实现该行为。

相关内容

最新更新