From 116104db58874ff1f364f42c1cc92517125f5663 Mon Sep 17 00:00:00 2001 From: igoudt Date: Sun, 1 Oct 2017 09:59:15 +0200 Subject: [PATCH] replace loops in triggeredabilities to lambdas --- .../mage/abilities/TriggeredAbilities.java | 46 ++++++------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilities.java b/Mage/src/main/java/mage/abilities/TriggeredAbilities.java index a8eebfb296c..5feca7f7afb 100644 --- a/Mage/src/main/java/mage/abilities/TriggeredAbilities.java +++ b/Mage/src/main/java/mage/abilities/TriggeredAbilities.java @@ -30,7 +30,6 @@ package mage.abilities; import mage.MageObject; import mage.constants.Zone; -import mage.designations.Designation; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.NumberOfTriggersEvent; @@ -41,12 +40,11 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; /** - * * @author BetaSteward_at_googlemail.com - * - * This class uses ConcurrentHashMap to avoid ConcurrentModificationExceptions. - * See ticket https://github.com/magefree/mage/issues/966 and - * https://github.com/magefree/mage/issues/473 + *

+ * This class uses ConcurrentHashMap to avoid ConcurrentModificationExceptions. + * See ticket https://github.com/magefree/mage/issues/966 and + * https://github.com/magefree/mage/issues/473 */ public class TriggeredAbilities extends ConcurrentHashMap { @@ -65,7 +63,7 @@ public class TriggeredAbilities extends ConcurrentHashMap it = this.values().iterator(); it.hasNext();) { + for (Iterator it = this.values().iterator(); it.hasNext(); ) { TriggeredAbility ability = it.next(); if (ability instanceof StateTriggeredAbility && ((StateTriggeredAbility) ability).canTrigger(game)) { checkTrigger(ability, null, game); @@ -74,7 +72,7 @@ public class TriggeredAbilities extends ConcurrentHashMap it = this.values().iterator(); it.hasNext();) { + for (Iterator it = this.values().iterator(); it.hasNext(); ) { TriggeredAbility ability = it.next(); if (ability.checkEventType(event, game)) { checkTrigger(ability, event, game); @@ -132,8 +130,8 @@ public class TriggeredAbilities extends ConcurrentHashMap keysToRemove = new ArrayList<>(); - for (String key : this.keySet()) { - if (key.endsWith(sourceId.toString())) { - keysToRemove.add(key); - } - } - for (String key : keysToRemove) { - remove(key); - } + keySet().removeIf(key -> key.endsWith(sourceId.toString())); } public void removeAllGainedAbilities() { @@ -182,19 +173,10 @@ public class TriggeredAbilities extends ConcurrentHashMap keysToRemove = new ArrayList<>(); - Abilities: - for (Entry entry : this.entrySet()) { - if (game.getObject(entry.getValue().getSourceId()) == null) { - for (Designation designation : game.getState().getDesignations()) { - if (designation.getId().equals(entry.getValue().getSourceId())) { - continue Abilities; - } - } - keysToRemove.add(entry.getKey()); - } - } - this.keySet().removeAll(keysToRemove); + + entrySet().removeIf(entry -> game.getObject(entry.getValue().getSourceId()) == null + && game.getState().getDesignations().stream().noneMatch(designation -> designation.getId().equals(entry.getValue().getSourceId()))); + } public TriggeredAbilities copy() {