diff --git a/Mage/src/main/java/mage/abilities/AbilitiesImpl.java b/Mage/src/main/java/mage/abilities/AbilitiesImpl.java index 8d40298c68c..03a4d47361b 100644 --- a/Mage/src/main/java/mage/abilities/AbilitiesImpl.java +++ b/Mage/src/main/java/mage/abilities/AbilitiesImpl.java @@ -24,11 +24,16 @@ public class AbilitiesImpl extends ArrayList implements Ab private static final ThreadLocalStringBuilder threadLocalBuilder = new ThreadLocalStringBuilder(200); + public AbilitiesImpl() { + // fast constructor + } + public AbilitiesImpl(T... abilities) { Collections.addAll(this, abilities); } public AbilitiesImpl(final AbilitiesImpl abilities) { + this.ensureCapacity(abilities.size()); for (T ability : abilities) { this.add((T) ability.copy()); } diff --git a/Mage/src/main/java/mage/abilities/costs/CostImpl.java b/Mage/src/main/java/mage/abilities/costs/CostImpl.java index 4674769db6d..538d169b2d0 100644 --- a/Mage/src/main/java/mage/abilities/costs/CostImpl.java +++ b/Mage/src/main/java/mage/abilities/costs/CostImpl.java @@ -12,7 +12,7 @@ public abstract class CostImpl implements Cost { protected UUID id; protected String text; protected boolean paid; - protected Targets targets; + protected Targets targets; // TODO: optimize performance - use private and null by default public CostImpl() { id = UUID.randomUUID(); diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java index 7c56ecd9381..eed7779f46d 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java @@ -45,6 +45,7 @@ public class ManaCostsImpl extends ArrayList implements M private ManaCostsImpl(final ManaCostsImpl costs) { this.id = costs.id; this.text = costs.text; + this.ensureCapacity(costs.size()); for (T cost : costs) { this.add(cost.copy()); } diff --git a/Mage/src/main/java/mage/target/Targets.java b/Mage/src/main/java/mage/target/Targets.java index 27975198654..30e1c395438 100644 --- a/Mage/src/main/java/mage/target/Targets.java +++ b/Mage/src/main/java/mage/target/Targets.java @@ -4,9 +4,9 @@ import mage.abilities.Ability; import mage.constants.Outcome; import mage.game.Game; import mage.game.events.GameEvent; -import mage.target.targetpointer.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; @@ -16,13 +16,16 @@ import java.util.stream.Collectors; */ public class Targets extends ArrayList { + public Targets() { + // fast constructor + } + public Targets(Target... targets) { - for (Target target : targets) { - this.add(target); - } + this.addAll(Arrays.asList(targets)); } protected Targets(final Targets targets) { + this.ensureCapacity(targets.size()); for (Target target : targets) { this.add(target.copy()); }