Frage von maxk3004, 17

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

Haben einen Terminkalender selbstprogrammiert (ohne gregorian calender, etc). Die Termine habe ich in einem Array gespeichert. Nun die Frage: wie kann ich einen Termin löschen?

Expertenantwort
von martin7812, Community-Experte für programmieren, 6

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);
Antwort
von GoimgarDE, 2

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.

Antwort
von PerfectMuffin, 5

Arrays haben fixe Länge.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten