english | блог | контакт
Wed, 20 Jul 2011 @ 09:42

Фильтрация Map-ов

collections java

При невнимательном чтении документации, можно, как это сделал я, наступить на грабли с вариантом:

org.apache.commons.collections.
   MapUtils.transformedMap(originalMap, keyTransformer, valueTransformer)

К сожалению он декорирует только добавление новых элементов. А старые остаются "как есть". Конечно, можно прогнать через трансформацию все старые значения (например, через putAll), но можно полениться и использовать Google collections, которые делают именно то, что от них ожидается:
com.google.common.collect.Maps.filterKeys(originalMap, keyPredicate)
com.google.common.collect.Maps.filterValues(originalMap, valuePredicate)
com.google.common.collect.Maps.filterEntries(originalMap, entryPredicate)