Heim  >  Artikel  >  Java  >  Lösung für die unveränderliche Ausnahme der Java-Sammlungsgröße (ImmutableSizeException)

Lösung für die unveränderliche Ausnahme der Java-Sammlungsgröße (ImmutableSizeException)

PHPz
PHPzOriginal
2023-08-18 21:46:071167Durchsuche

Lösung für die unveränderliche Ausnahme der Java-Sammlungsgröße (ImmutableSizeException)

Lösung für die Ausnahme der unveränderlichen Größe einer Java-Sammlung (ImmutableSizeException)

Bei der Verwendung von Java-Sammlungen kann es vorkommen, dass Sie auf eine Ausnahme der unveränderlichen Größe einer Java-Sammlung (ImmutableSizeException) stoßen. Diese Ausnahme tritt normalerweise auf, wenn versucht wird, die Größe einer Sammlung zu ändern, die Sammlung jedoch als unveränderlich vordefiniert wurde. In diesem Artikel werden verschiedene Lösungen für dieses Problem vorgestellt und entsprechende Codebeispiele gegeben.

  1. Verwenden Sie unveränderliche Sammlungen
    Unveränderliche Sammlungen sind Sammlungen, die nach ihrer Erstellung nicht mehr geändert werden können. Es gibt einige Bibliotheken in Java, die Implementierungen unveränderlicher Sammlungen bereitstellen, z. B. Guavas ImmutableList und ImmutableSet. Durch die Verwendung dieser unveränderlichen Sammlungen wird das Problem der Änderung der Sammlungsgröße vermieden.
import com.google.common.collect.ImmutableList;

public class ImmutableCollectionExample {
    public static void main(String[] args) {
        ImmutableList<String> names = ImmutableList.of("Alice", "Bob", "Charlie");
        // 尝试修改集合大小,将会抛出UnsupportedOperationException异常
        names.add("David");
    }
}
  1. Eine Kopie erstellen und bearbeiten
    Wenn Sie die Größe der Sammlung ändern müssen, besteht eine Lösung darin, eine Kopie der Sammlung zu erstellen, die Kopie zu bearbeiten und das Ergebnis dann der ursprünglichen Sammlung zuzuweisen. Dadurch wird vermieden, dass unveränderliche Sammlungen direkt geändert werden.
import java.util.ArrayList;
import java.util.List;

public class CopyCollectionExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 创建副本进行操作
        List<String> updatedNames = new ArrayList<>(names);
        updatedNames.add("David");

        // 将结果赋值给原始集合
        names = updatedNames;
    }
}
  1. Verwenden Sie veränderliche Sammlungen
    Wenn Sie die Sammlungsgröße häufig ändern müssen, können Sie die Verwendung veränderlicher Sammlungen wie ArrayList in Betracht ziehen. Die Größe einer Variablensammlung kann geändert werden, es muss jedoch auf Synchronisierungsprobleme in einer Multithread-Umgebung geachtet werden.
import java.util.ArrayList;
import java.util.List;

public class MutableCollectionExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 修改集合大小
        names.add("David");
    }
}

Egal für welche Lösung Sie sich entscheiden, die Entscheidung sollte auf der Grundlage Ihrer spezifischen Bedürfnisse und Szenarien getroffen werden. Wenn Sie die Sammlungsdaten nur lesen müssen, ohne sie zu ändern, sind unveränderliche Sammlungen die bessere Wahl. Wenn die Sammlungsgröße häufig geändert werden muss, sind veränderbare Sammlungen praktischer. Darüber hinaus müssen wir auch auf den Betrieb von Sammlungen in einer Multithread-Umgebung achten, um die Thread-Sicherheit zu gewährleisten.

Zusammenfassung:

  • Durch die Verwendung unveränderlicher Sammlungen wie Guavas ImmutableList und ImmutableSet kann das Problem der Änderung der Sammlungsgröße vermieden werden.
  • Erstellen Sie eine Kopie für den Betrieb und weisen Sie das Ergebnis der ursprünglichen Sammlung zu, wodurch das Problem gelöst werden kann Das Problem unveränderlicher Sammlungen mit Größenproblemen:
  • Wenn Sie die Sammlungsgröße häufig ändern müssen, können Sie variable Sammlungen verwenden und auf Synchronisierungsprobleme in Multithread-Umgebungen achten.

Durch die oben genannten Lösungen können Sie das Problem der unveränderlichen Ausnahme der Java-Sammlungsgröße (ImmutableSizeException) effektiv lösen und die Zuverlässigkeit und Stabilität des Programms verbessern.

Das obige ist der detaillierte Inhalt vonLösung für die unveränderliche Ausnahme der Java-Sammlungsgröße (ImmutableSizeException). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn