Ich habe mich gefragt, wie ich ein Integer-Array so initialisieren kann, dass sich Größe und Werte während der Ausführung meines Programms ändern. Irgendwelche Vorschläge?
Ja: Verwenden Sie ArrayList .
In Java haben "normale" Arrays eine feste Größe. Sie müssen ihnen eine Größe geben und können sie nicht erweitern oder verkleinern. Um die Größe zu ändern, müssen Sie ein neues Array erstellen und die gewünschten Daten kopieren - was ineffizient und für Sie schmerzhaft ist.
Glücklicherweise gibt es alle Arten von integrierten Klassen, die gemeinsame Datenstrukturen implementieren, sowie andere nützliche Tools. Sie sollten die Java 6-API auf eine vollständige Liste überprüfen .
Eine Einschränkung: ArrayList kann nur Objekte (z. B. Ganzzahlen) enthalten, keine Grundelemente (z. B. Ints). In den meisten Fällen erledigt Autoboxing / Autounboxing dies stillschweigend für Sie, aber je nachdem, was Sie tun, kann es zu seltsamen Verhaltensweisen kommen.
int[] array = new int[size];
size
ist eine Variable, aber die Länge eines Arrays muss festgelegt werden, stimmt's? @Lord Torgamussize
des Programms nicht entsprechend. Es erhält die Größe, in der es sich gerade befindet,size
wenn diese Zeile ausgeführt wird.null
. Irgendwelche Ideen warum?Arrays in Java haben eine feste Größe. Was Sie brauchen, ist eine ArrayList, eine von mehreren äußerst wertvollen Sammlungen, die in Java verfügbar sind.
Anstatt
Sie nutzen
Um dann die von Ihnen verwendete Liste
ints.add(y)
undints.remove(z)
viele andere nützliche Methoden zu ändern, finden Sie diese in den entsprechenden Javadocs.Ich empfehle dringend, die in Java verfügbaren Collections-Klassen zu studieren, da sie sehr leistungsfähig sind und Ihnen viele integrierte Funktionen bieten, die Java-Neulinge normalerweise unnötig neu zu schreiben versuchen.
quelle
List<Integer>
stattArrayList<Integer>
?Arrays haben nach der Instanziierung eine feste Größe. Sie können stattdessen eine Liste verwenden.
Autoboxing macht eine Liste ähnlich wie ein Array nutzbar. Sie können einfach int-Werte einfügen:
quelle
Ich bin mit den vorherigen Antworten nicht einverstanden
ArrayList
, daArrayList
es sich nicht um ein dynamisches Array handelt, sondern um eine Liste, die von einem Array unterstützt wird. Der Unterschied besteht darin, dass Sie Folgendes nicht tun können:Sie erhalten eine IndexOutOfBoundsException, da sich an dieser Position noch kein Element befindet, obwohl das Hintergrundarray eine solche Hinzufügung zulassen würde. Sie müssen also eine benutzerdefinierte erweiterbare Array-Implementierung verwenden, wie von @ randy-lance vorgeschlagen
quelle
Quelle: So erstellen Sie ein dynamisches Array
quelle
Es wird empfohlen, List zu verwenden, um mit kleinen Größen umzugehen.
Wenn Sie eine große Anzahl von Nummern haben, verwenden Sie NIEMALS List und Autoboxing.
Liste <Integer> Liste
Für jedes einzelne Int wird automatisch eine neue Ganzzahl erstellt. Sie werden feststellen, dass es langsam wird, wenn die Liste größer wird. Diese Ganzzahlen sind unnötige Objekte. In diesem Fall wäre es besser, eine geschätzte Größe zu verwenden.
quelle
Wie wäre es
List
stattdessen mit einem ? Beispielsweise,ArrayList<integer>
quelle
Sie können die Größe eines Arrays nicht ändern. Sie können jedoch ein neues Array mit der richtigen Größe erstellen und die Daten vom alten Array in das neue kopieren.
Am besten verwenden Sie jedoch IntList von jacarta commons. ( hier )
Es funktioniert genau wie eine Liste, benötigt jedoch weniger Speicherplatz und ist effizienter, da es Ints speichert, anstatt Wrapper-Objekte über Ints zu speichern (das ist die Integer-Klasse).
quelle
Ich habe diese Frage beantwortet und nein, Sie brauchen keine Arrayliste oder etwas anderes. Dies war eine Aufgabe und ich habe sie abgeschlossen, damit sich die Arrays vergrößern können. Hier ist der Link Wie man Java Dynamic Array benutzt und hier ist der Link für meine Frage, die ich mit Java Dynamic Arrays beantwortet habe
quelle