Nein, du kannst die Größe eines Arrays nach der Erstellung nicht ändern. Du musst es entweder größer als du denkst zuweisen oder den Overhead akzeptieren, wenn es neu zugewiesen werden muss, um zu wachsen. Wenn es das tut, musst du ein neues zuweisen und die Daten von alt nach neu kopieren:
int[] alteItems = new int[10];
for (int i = 0; i < 10; i++) {
alteItems[i] = i + 10;
}
int[] neueItems = new int[20];
System.arraycopy(alteItems, 0, neueItems, 0, 10);
alteItems = neueItems;
Wenn du dich in dieser Situation wiederfindest, würde ich dringend empfehlen, anstelle von Arrays die Java Collections zu verwenden. Insbesondere ArrayList
wickelt im Wesentlichen ein Array ein und kümmert sich um die Logik zum Wachsen des Arrays nach Bedarf:
List meineKlasse = new ArrayList();
meineKlasse.add(new XClass());
meineKlasse.add(new XClass());
Im Allgemeinen ist ein ArrayList
aus mehreren Gründen eine bevorzugte Lösung gegenüber einem Array. Zum einen sind Arrays veränderbar. Wenn du eine Klasse hast, die das macht:
Klasse MeineKlasse {
private int[] items;
public int[] getItems() {
return items;
}
}
dann hast du ein Problem erstellt, da ein Aufrufer dein privates Datenmitglied ändern kann, was zu allen möglichen defensiven Kopien führt. Vergleiche das mit der Listen-Version:
Klasse MeineKlasse {
private List items;
public List getItems() {
return Collections.unmodifiableList(items);
}
}
0 Stimmen
Ich habe das Format der Frage verbessert, du kannst nur den Titel ändern, wenn du möchtest, sei einfach beschreibend. und willkommen bei Stackoverflow! :D