ArrayList frage



  • hi shade

    danke mal fuer deine antwort.

    kannst du mir auch noch sagen wo der unterschied zwischen

    ArrayList a = new ArrayList();
    

    und

    List a = new ArrayList();
    

    hab beide schon gesehen, weiß aber nicht warum einmal so und einmal so.

    danke

    Meep Meep



  • Beim oberen hast du als statischen Typ ArrayList, eine Spezialisierung von List. Wenn du das so machst, kannst du alle Methoden der ArrayList nutzen.
    Beim unteren hast du als statischen Typ List und kannst nur die (im Vergleich) eingeschränkten Dienste nutzen, dafür kannst du nachher an die selbe Referenz z.B. ne LinkedList zuweisen. Manchmal braucht man das so, weil man seinen Code flexibler halten will, den konkreteren Typ vorher noch nicht kennt oder aus anderen Gründen.
    Das sind absolute Basics in jeder Programmiersprache mit Unterstützung für Objektorientierung, du solltest dir mal ein Buch darüber zu Gemüte führen.



  • Meep Meep schrieb:

    hab beide schon gesehen, weiß aber nicht warum einmal so und einmal so.

    ArrayList ist ein konkreter Typ.
    List nur ein Interface. ArrayList implementiert List

    Du kannst jede ArrayList auch als List behandeln, weil ein ArrayList ja nichts anderes als eine List (mit zusätzlichen Methoden) ist.

    Generell sollte man die Collections so abstract wie nur möglich behandeln, also am besten Collection verwenden wo es nur geht und nur wenn nötig zu einem konkreteren Interface wie zB List wechseln und nur wenn wirklich nötig mit dem konkreten Typen arbeiten.

    Die Idee dahinter ist, dass du dann naemlich nur die Instanziierung ändern musst wenn du eine andere Collection verwenden willst.

    btw: seit Java 5 gibt es Generics, also lieber

    List<Integer> list = new ArrayList<Integer>();
    schreiben 🙂



  • danke euch beiden

    @Optimizer
    kannst ein gutes buch empfehlen ?

    Meep Meep



  • Java-Bücher hab ich bisher leider kaum gelesen. Auf jeden Fall würde ich darauf achten, dass dort schon mit Java 5 gearbeitet wird.
    Das "Handbuch der Java-Programmierung" soll nicht so schlecht sein. Hab es selber aber nur angelesen.



  • Was die Bücher angeht, hängt es eigentlich davon ab, wie gut du in der Materie drin bist. Als blutiger Anfänger ist z.B das Buch von Balzert "Grundlagen der Informatik" ganz hilfreich und angenehm. Leider aber zu teuer und nachher, wenn du es kannst, nicht mal als Nachschlagewerk zu gebrauchen. Ich persönlich bin von "Go 2 Java" von Krüger begeistert. Für den Anfänger eignet es sich nicht besonders, aber im nachhinein ist es ein super Nachschlagewerk. Ob es jetzt mittlerweile auch für Java 5 gibt - keine Ahnung. Aber der einzige unterschied liegt in den Collections. Und das aktuelle Java Collections Framework ist im Vergleich zu C++ sehr übersichtlich. Also reicht meiner meinung nach auch wenn du dir ein Buch besorgst, dass die generische Programmierung in Java noch nicht behandelt. Du kannst später alles auch in java doc nachlesen.
    "Java ist auch eine Insel" soll auch sehr gut sein. Die ältere Version gibt es sogar als html kostenlos unter http://www.galileocomputing.de/openbook/javainsel3/



  • dadrus schrieb:

    Aber der einzige unterschied liegt in den Collections.

    Vielleicht solltest du doch mal ein Java 5 Buch lesen, dann würden dir schon mehr Unterschiede auffallen, die alles andere als trivial sind. 😉



  • Ich habe damit eigentlich nur den generischen Teil gemeint. Denn das ist wirklich für java etwas komplett neues. Die anderen Sachen sind eher Erweiterungen.



  • Zu was sind denn die Annotations eine Erweiterung? Die Attributorientierte Programmierung war Java bisher völlig verschlossen.



  • Ok 😉 ich passe. Hast ja recht. Die Liste der Neuerungen ist nicht gerade klein


Anmelden zum Antworten