diff --git a/forge-core/src/main/java/forge/util/ItemPool.java b/forge-core/src/main/java/forge/util/ItemPool.java index f8caf2d4061..6cf22ec2162 100644 --- a/forge-core/src/main/java/forge/util/ItemPool.java +++ b/forge-core/src/main/java/forge/util/ItemPool.java @@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHashMap; import com.google.common.base.Function; import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; import forge.item.InventoryItem; /** @@ -149,12 +150,14 @@ public class ItemPool implements Iterable int countAll(Predicate condition, Class cls) { int count = 0; - for (Entry e : this) { - T item = e.getKey(); - if (cls.isInstance(item) && condition.apply((U)item)) { - count += e.getValue(); + Iterable matchingKeys = Iterables.filter(this.items.keySet(), new Predicate() { + @Override + public boolean apply(T item) { + return cls.isInstance(item) && condition.apply((U)item); } - } + }); + for (T key : matchingKeys) + count += this.items.get(key); return count; } diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java index 49d785edbdc..cfc2041798a 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java @@ -1,6 +1,7 @@ package forge.itemmanager.filters; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import javax.swing.JPanel; @@ -76,10 +77,12 @@ public abstract class StatTypeFilter extends ToggleButt btnPackOrDeck.setText(String.valueOf(count)); } - for (Map.Entry btn : buttonMap.entrySet()) { - if (btn.getKey().predicate != null) { - int count = items.countAll(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES), PaperCard.class); - btn.getValue().setText(String.valueOf(count)); + Iterator buttonMapStatsIterator = buttonMap.keySet().iterator(); + while (buttonMapStatsIterator.hasNext()){ + StatTypes statTypes = buttonMapStatsIterator.next(); + if (statTypes.predicate != null){ + int count = items.countAll(Predicates.compose(statTypes.predicate, PaperCard.FN_GET_RULES), PaperCard.class); + buttonMap.get(statTypes).setText(String.valueOf(count)); } } getWidget().revalidate();