Eine Postion aus einen Array löschen(Java)?

3 Antworten

Wie PerfectMuffin bereits gesagt hat, haben Arrays eine feste Länge.

Du könntest aber:

  • Anstatt eines Arrays eine Liste (z.B. Klasse "ArrayList" oder "Vector") zum Speichern der Termine verwenden
  • Das Array in eine Liste umwandeln, dann den Eintrag löschen und die Liste wieder zurück in ein Array umwandeln (das dann einen Eintrag weniger haben wird als das urspüngliche Array)

Das Ganze muss dann ungefähr so aussehen (ungetestet):

TerminKlasse[] termine = ...;
...
List<TerminKlasse> list = Arrays.asList(termine);
list.remove(indexOderElement);
termine = list.toArray(termine);

Wie andere schon schrieben haben Arrays eine Feste Länge.

Um genau zu sein wird ein Array sogar als ganzer Block im Speicher allociert. Die Felder des Arrays liegen also wirklich auch im speicher so hintereinander.

Warum tut man dies so kompliziert? Weil es sau effizient ist. Man muss sich nur die Start Adresse des Array Blocks kennen und kann dann den "Index*Größe der Elemente" drauf addieren und direkt auf den Speicher block des gesuchten Elements zugreifen.

Nun gibt es 2 Möglichkeiten dies zu lösen:
Du musst die Größe des Arrays Verwalten. Dies kannst du selbst tun oder du nimmst die Klasse ArrayList die dies bereits für dich tut. (Und dabei auch effizient implementiert ist.)

Dies macht in meinen Augen aber nur Sinn wenn die Reihenfolge in der Liste für dich wichtig. Du das ganze also irgendwie ordnest bzw ein Mehrwert aus der Reihenfolge ziehst. Iterierst du eh immer über das Array um Dinge zu suchen mit denen du etwas machen willst kannst du auch ein HashSet verwenden.
Für deine Aufgabe ist es jetzt im Grunde egal aber anschauen solltest du dir beides eh und wenn es später wirklich mal um echte Projekte mit viel Daten geht ist das HashSet etwas effizienter.

Arrays haben fixe Länge.