Wie liest dieses Java-Programm der Compiler?

Hallo allerseits! 🙂

Ich habe seit kurzem mir ein Buch über Datenbanken geborgt und hier diesen Code-Schnippsel gefunden:


Java:
import java.util.*;
public class SimpleDB {
  public static void main (String[]args) {
    List<String> database = new ArrayList<String> ();
    database.add ("Elvis Presley");
    database.add ("Beatles");
    database.add ("Rolling Stones");
    database.remove (database.indexOf ("Beatles"));
     int index=database.indexOf("Rolling Stones");
    database.set (index, "The Rolling Stones");
       System.out.println (database.contains ("Elvis Presley"));
         System.out.println (database);
 
  }
}

So wie ich es verstanden habe, zählt ja das Programm nicht ab der 1 sondern ab der 0 und entsprechend wurde dann das so geschrieben, dass der Eintrag von Beatles gelöscht wird und zusammen mit dem Index von Rolling Stones zusammen gesettet wird. Ich versteh jedoch jetzt nicht genau den Sinn dahinter, bzw. welche Aussage das compilierte Ergebnis:

true
[Elvis Presley, The Rolling Stones ]

zu bedeuten hat. True muss man ja in der Regel auf boolesche Anweisungen zurückführen, hier ist es aber ein generischer String-Wert. Da ich nie mit Java im Zusammenhang mit Datenbanken gearbeitet habe, finde ich sieht es recht verwirrend aus 😀
Kann mir jemand diesen Java-Code erklären?
 
Zuletzt bearbeitet von einem Moderator:
List<String> database = new ArrayList<String> ();
database.add ("Elvis Presley");
database.add ("Beatles");
database.add ("Rolling Stones");

Du legst eine Liste mit Strings an und fügst dieser Liste 3 Elemente hinzu.

database.remove (database.indexOf ("Beatles"));
Hier suchst du dir den Index des Elementes welches "Beatles" enthält und löschst diesen Eintrag.
Alle anderen Elemente rutschen nach um die Lücke aufzufüllen.

int index=database.indexOf("Rolling Stones");
Hier holst du dir den Index des Elementes welches "Rolling Stones" enthält und speicherst diesen Wert in einer Variable.

database.set (index, "The Rolling Stones");
Du überschreibst den Eintrag an der o.g. Stelle mit dem Wert "The Rolling Stones" .. somit wird aus "Rolling Stones" --> "The Rolling Stones".

System.out.println (database.contains ("Elvis Presley"));
System.out.println (database);
database.contains("...") gibt dann true wenn der übergebene Wert in der Liste vorkommt. Das ist der Fall.

Sollte das noch nicht reichen dann Stell bitte noch mal eine etwas genauere Frage 🙂

PS: Code bitte immer in [code=Java]MY CODE[/code] Tags 🙂

Gruß Robert
 
aha..ok danke. Hab zunächst nicht bemerkt, dass bei dem einen Rolling Stones Eintrag das "The" fehlt ^^
also, ist es einfach so, dass es den Eintrag "Beatles" vollkommen löscht, nicht nur den Index und mit dem Befehl contains überprüft das Programm, ob Elvis Presley in der Datenbank existiert, das ist klar.
Was ich nicht ganz noch verstehe: wieso wird "The Rolling Stones" auch mit einbezogen. Das wäre ja der Fall wenn beide Einträge die selbe Variable teilen. Aber ich glaube, das wird durch den Befehl System.out.println (database); hervorgerufen. Ok, dann doch alles klar (glaube ich 🙂 )
ich habe nur gedacht der Sinn sollte sein, dass nicht ein ganzer Eintrag gelöscht wird sondern dass der Index verschoben wird, halt statt
0
1
2
die Indexfolge
1
2
3
entsteht.
Aber das ist im Buch halt irgendwie verschachtelt erläutert worden.
 
mit dem Befehl contains überprüft das Programm, ob Elvis Presley in der Datenbank existiert, das ist klar.
Es handelt sich um eine einfache Liste und keine Datenbank!

Was ich nicht ganz noch verstehe: wieso wird "The Rolling Stones" auch mit einbezogen. Das wäre ja der Fall wenn beide Einträge die selbe Variable teilen. Aber ich glaube, das wird durch den Befehl System.out.println (database); hervorgerufen. Ok, dann doch alles klar (glaube ich 🙂 )
Mit System.out.println (database); wird die Liste auf der Konsole ausgegeben. Dabei werden einfach die Einträge der Liste ausgegeben.

ich habe nur gedacht der Sinn sollte sein, dass nicht ein ganzer Eintrag gelöscht wird sondern dass der Index verschoben wird, halt statt
Nein man kann nicht einfach den Index verschieben 😉 Listen und Arrays fangen immer bei Index 0 an. Man kann nur den Inhalt löschen
 

Neue Themen


Zurück
Oben