| 1689 | } |
| 1690 | |
| 1691 | @Override |
| 1692 | public int remove(@Nullable Object element, int occurrences) { |
| 1693 | checkNonnegative(occurrences, "occurrences"); |
| 1694 | if (occurrences == 0) { |
| 1695 | return count(element); |
| 1696 | } |
| 1697 | Collection<V> values = Maps.safeGet(multimap.asMap(), element); |
| 1698 | if (values == null) { |
| 1699 | return 0; |
| 1700 | } |
| 1701 | int oldCount = values.size(); |
| 1702 | if (occurrences >= oldCount) { |
| 1703 | values.clear(); |
| 1704 | } else { |
| 1705 | Iterator<V> iterator = values.iterator(); |
| 1706 | for (int i = 0; i < occurrences; i++) { |
| 1707 | iterator.next(); |
| 1708 | iterator.remove(); |
| 1709 | } |
| 1710 | } |
| 1711 | return oldCount; |
| 1712 | } |
| 1713 | |
| 1714 | @Override |
| 1715 | public void clear() { |