Search code examples
javadictionarysetguavapredicate

how can I filter map entries based on set of entries


I'm using google guava 12 and have a map:

Map<OccupancyType, BigDecimal> roomPrice;

I have a Set:

Set<OccupancyType> policy;

How can I filter entries in the roomPrice map based on policy and return the filtered map ?

filteredMap needs to have all the values from policy. In case, roomPrice map doesnt have an entry from policy, I'd like to input default value instead.


Solution

  • Since you have a Set of keys you should use Maps.filterkeys(), also Guava provides a pretty good set of predicates that you can use out of the box. In your case something like Predicates.in() should work.

    So basically you end up with:

    Map<OccupancyType, BigDecimal> filteredMap
        = Maps.filterKeys(roomPrice, Predicates.in(policy));
    

    Hope it helps.