ArrayList frage
-
hola leute
wenn ich ein arraylist habe und das dann mit ints fuellen will, hab ich ja ca. folgenden code:
ArrayList a = new ArrayList(); for ( int i = 1; i <= 20; i++ ) a.add( "" + i );
was macht der da genau ? seh ich das richtig, das er da ein temporaeres stringobject erzeugt, dort dann die zahl reinschreibt, weiters im ArrayList einen string erzeugt und dann da den temporaeren string reinkopiert ?
das dauert ja ewig und drei tage wenn man groessere datenmengen hat.
gibts noch ne schnellere version, ne art container mit zahlen , strings oder sonst was zu fuellen ? oder ist das schon das schnellste ?
die arrays fuer die primitiven datentypen gehen recht flott. um ein vielfaches schneller als ArrayList mit objecten.cermy
Meep Meep
-
Ja, das ist in der Tat Blödsinn.
Statt den int in einen String zu packen, solltest du ihn 'boxen', also in einen java.lang.Integer packen.
-
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 ListDu 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