diff options
Diffstat (limited to 'platform/util/src/com/intellij/util/containers/FactoryMap.java')
-rw-r--r-- | platform/util/src/com/intellij/util/containers/FactoryMap.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/platform/util/src/com/intellij/util/containers/FactoryMap.java b/platform/util/src/com/intellij/util/containers/FactoryMap.java index 30684d0e6dfa..3eea4d3dd984 100644 --- a/platform/util/src/com/intellij/util/containers/FactoryMap.java +++ b/platform/util/src/com/intellij/util/containers/FactoryMap.java @@ -15,6 +15,7 @@ */ package com.intellij.util.containers; +import com.intellij.util.ObjectUtils; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -92,7 +93,7 @@ public abstract class FactoryMap<K,V> implements Map<K, V> { public Collection<V> notNullValues() { if (myMap == null) return Collections.emptyList(); - final Collection<V> values = new ArrayList<V>(myMap.values()); + final Collection<V> values = ContainerUtil.newArrayList(myMap.values()); for (Iterator<V> iterator = values.iterator(); iterator.hasNext();) { if (iterator.next() == NULL) { iterator.remove(); @@ -101,6 +102,13 @@ public abstract class FactoryMap<K,V> implements Map<K, V> { return values; } + public boolean removeValue(Object value) { + if (myMap == null) return false; + Object t = ObjectUtils.notNull(value, NULL); + return myMap.values().remove(t); + } + + @Override public void clear() { if (myMap != null) { |