Returns a multimap containing the mappings in unfiltered whose keys satisfy a predicate. The returned multimap is a live view of unfiltered; changes to one affect the other. The resulting multimap's views have iterators that don't support remove(), but all other methods a
(Multimap<K, V> unfiltered, final Predicate<? super K> keyPredicate)
| 1881 | |
| 1882 | |
| 1883 | public static <K, V> Multimap<K, V> filterKeys(Multimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) { |
| 1884 | if (unfiltered instanceof SetMultimap) { |
| 1885 | return filterKeys((SetMultimap<K, V>) unfiltered, keyPredicate); |
| 1886 | } else if (unfiltered instanceof ListMultimap) { |
| 1887 | return filterKeys((ListMultimap<K, V>) unfiltered, keyPredicate); |
| 1888 | } |
| 1889 | else if (unfiltered instanceof FilteredKeyMultimap) { |
| 1890 | FilteredKeyMultimap<K, V> prev = (FilteredKeyMultimap<K, V>) unfiltered; |
| 1891 | return new FilteredKeyMultimap<K, V>(prev.unfiltered, Predicates.<K>and(prev.keyPredicate, keyPredicate)); |
| 1892 | } else if (unfiltered instanceof FilteredMultimap) { |
| 1893 | FilteredMultimap<K, V> prev = (FilteredMultimap<K, V>) unfiltered; |
| 1894 | return filterFiltered(prev, Maps.<K>keyPredicateOnEntries(keyPredicate)); |
| 1895 | } else { |
| 1896 | return new FilteredKeyMultimap<K, V>(unfiltered, keyPredicate); |
| 1897 | } |
| 1898 | } |
| 1899 | |
| 1900 | /** |
| 1901 | * Returns a multimap containing the mappings in {@code unfiltered} whose keys |
no test coverage detected