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() {