Frage

Beim Erstellen von Klassen in Java erstelle ich häufig Sammlungen auf Instanzebene, von denen ich im Voraus weiß, dass sie sehr klein sein werden – weniger als 10 Elemente in der Sammlung.Da ich die Anzahl der Elemente jedoch nicht im Voraus kenne, entscheide ich mich normalerweise für eine dynamische Sammlung (ArrayList, Vector usw.).

class Foo
{
  ArrayList<Bar> bars = new ArrayList<Bar>(10);
}

Ein Teil von mir nörgelt immer wieder, dass es verschwenderisch sei, komplexe dynamische Sammlungen für etwas so Kleines zu verwenden.Gibt es eine bessere Möglichkeit, so etwas umzusetzen?Oder ist das die Norm?

Beachten Sie, dass ich keine (spürbaren) Leistungseinbußen oder ähnliches erleide.Ich frage mich nur, ob es nicht einen besseren Weg gibt, Dinge zu erledigen.

War es hilfreich?

Lösung

Die ArrayList Klasse in Java hat nur zwei Datenelemente, einen Verweis auf ein Object[] Array und einen größe, die Sie sowieso benötigen, wenn Sie keinen ArrayList verwenden. So ist der einzige Vorteil eines ArrayList nicht mit spart eine Objektzuordnung, die immer unwahrscheinlich ist eine große Sache zu sein.

Wenn Sie erstellen und Entsorgung von vielen, vielen Instanzen Ihrer Container-Klasse (und durch Erweiterung Ihrer ArrayList Instanz) jede Sekunde Sie Macht haben ein kleines Problem mit der Garbage Collection Churn-aber das ist etwas zu befürchten, wenn es jemals auftritt. Garbage Collection ist in der Regel die wenigsten Sorgen.

scroll top