Verständnisfrage zu Arrays

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nicht nur in Java haben Arrays eine feste Größe.

    Richtig, es ist in Java üblich List-Objekte zu verwenden anstatt Arrays.

    Neben der ArrayList gibt es auch noch andere Listen. Zum Beispiel die LinkedList. Diese zwei Listen sollte man mit ihren Vor- und Nachteilen kennen.
    Die Bedienung der Listen im Java-Code ist gleich. Es unterscheidet sich lediglich der CPU und Speicherverbrauch.


    ArrayList:
    - Verwaltet im Prinzip ein Array.
    - Einfügen am Ende der Liste geht solange schnell, bis eine bestimmte Größe erreicht ist. Dann muss die ArrayList ihr Array vergrößern, was Zeit kostet.
    - Einfügen an einer beliebigen Stelle in der Liste ist langsam.
    - Der ArrayList kann man beim Anlegen die Größe übergeben werden (wie beim Array). Du kannst trotzdem mehr Elemente in die Liste tun, aber dann kostet das wieder CPU-Zeit wie oben schon erwähnt.
    - Wenn die ArrayList perfekt gefüllt ist, dann braucht sie weniger Speicher als andere Listen

    LinkedList:
    - Merkt sich für jedes Element in der Liste den Vorgänger und den Nachfolger
    - Das Einfügen geht schnell, egal wo, da nur Vorgänger und Nachfolger umgebogen werden.
    - Das Einfügen am Ende der Liste könnte bei der ArrayList einen Hauch schneller gehen, solange die Array-Größe nicht ereicht ist.
    - Da sich die Liste Vorgänger und Nachfolger meken muss, braucht sie mehr Speicher als die ArrayList

    ArrayList ist also gut, wenn du die Größe vorher kennst und nicht mitten drin Einfügeoperationen machen willst (für Sortierungen ist sie deswegen ungeeignet). Ansonsten nimmst du besser die LinkedList.

    Ach ja, wenn du sicherstellen willst, dass jedes Element nur einmal vorkommen kann, dann nimm keine Liste sondern ein Set. HashSet und LinkedHashSet könnten da von Interesse sein.