如何根据条目集过滤地图条目

bra*_*ter 9 java predicate map set guava

我正在使用谷歌番石榴12并有一张地图:

Map<OccupancyType, BigDecimal> roomPrice;
Run Code Online (Sandbox Code Playgroud)

我有一套:

Set<OccupancyType> policy;
Run Code Online (Sandbox Code Playgroud)

如何过滤roomPrice map基于的条目policy并返回过滤后的地图?

filteredMap需要拥有所有的价值policy.如果roomPrice地图没有来自策略的条目,我想改为输入默认值.

Fra*_*ulo 29

由于你有一组键,你应该使用Maps.filterkeys(),Guava也提供了一组非常好的谓词,你可以开箱即用.在你的情况下,像Predicates.in()这样的东西应该工作.

所以基本上你最终得到:

Map<OccupancyType, BigDecimal> filteredMap
    = Maps.filterKeys(roomPrice, Predicates.in(policy));
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.