zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Nein. Es ist nicht erlaubt Lücken zwischen den Elementen zu erzeugen. Das Hinzufügen eines Elements bei Index 5 im obigen Programm würde einen Laufzeitfehler erzeugen.


Ein Element entfernen

Stapel von vier Büchern, ein mittleres Buch wird entfernt

Um ein Element aus einer Liste zu entfernen, verwenden wir die Methode remove(). Mit dieser Methode wird ein Element entfernt, ohne eine Lücke zu hinterlassen. Die Objektreferenzen oberhalb des entfernten Elements werden nach unten verschoben, um die Lücke zu füllen.

E remove(int index)

Die Objektreferenz an der Position index wird aus der Liste entfernt. Die Elemente an den Stellen index+1, index+2, ... , size()-1 werden jeweils um eins nach unten verschoben, um die Lücke zu schließen. Dies ist so, als würde man ein Buch aus der Mitte eines Stapels von Büchern herausziehen.

Die Objektreferenz, die aus der Liste entfernt wurde, ist der Rückgabewert der Methode. Dieser Wert kann einer Referenzvariablen zugewiesen werden. Solange es eine Referenz auf das Objekt gibt, ist das Objekt nicht verloren. Wenn die einzige Referenz auf das Objekt diejenige in der Liste war und diese Referenz nicht einer Variablen zugewiesen wird, wird das Objekt vom Speicherbereinigungsdienst (Garbage Collector) gelöscht werden.


Frage 14:

Wir prüfen das folgende Programm. Was wird es ausgeben?

import java.util.* ;
public class DeleteEg
{
  public static void main(String[] args)
  {
    ArrayList<String> names = new ArrayList<>();

    names.add( "Amy" );
    names.add( "Bob" );
    names.add( "Chris" );
    names.add( "Deb" );

    names.remove(2);

    for (int j=0; j < names.size(); j++)
      System.out.println(
        j + ": " + names.elementAt(j));

  }
}

zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite