| 

.NET C# Java Javascript Exception

1
Hi,
ich programmiere gerade eine Android App. Im Codereview wurde mir gesagt, dass ich anstatt ArrayList besser List benutzen sollte. Mir ist leider nicht klar warum?

Grüße + Danke
News:
25.07.2011
freezenow 33 3
2 Antworten
3
java.util.List ist ein Interface, welches von ArrayList implementiert wird. Wenn du in deiner Implementierung statt ArrayList nur das Interface List verwendest, kannst du damit im Prinzip genau so arbeiten, wie mit der ArrayList.
Das ermöglicht Dir allerdings aber folgendes:

Solltest du feststellen, dass du deutlich öfters schreibst, als liest, und du weißt nicht, wie groß die Liste üblicherweise wird, könnte es sinnvoll sein eine LinkedList zu verwenden. Diese verhält sich im genannten Fall nämlich besser als eine ArrayList (weniger Aufwand beim Einfügen).
Durch den Zugriff auf die Liste durch das List Interface kannst du folgendes machen:
List<Object> liste = new ArrayList<Object>();

wird zu
List<Object> liste = new LinkedList<Object>();

Der Rest des Codes kann gleich bleiben. Du musst deinen Code also nur an einer Stelle ändern.
25.07.2011
wlami 736 1 7
1
Ergänzend zu der sehr guten Erklärung von wlami: wenn Du die Liste gar nicht selbst erzeugst, sondern als Methoden-Parameter übergeben bekommst, so wird durch die Verwendung des Interface statt der konkreten Implementierung Dein Code leichter (wieder-)verwendbar. Er funktioniert dann mit jeder List-Implementierung, nicht nur mit einer ArrayList. Außerdem ist eine API auch ein Kommunikationsmittel, und Du teilst dann mit: ich mache hier nichts, was irgendeine bestimmte List-Implementierung verlangen würde (wohingegen im anderen Fall sich mancher wundern würde, warum es unbedingt eine ArrayList sein muß, die übergeben werden soll).

Warum aber hast Du das nicht den Reviewer gefragt? Code-Reviews, so wie ich sie kenne, sollen doch auch dazu dienen, Wissen zu verbreiten und im Team eine gemeinsame, einheitliche Herangehensweise an die Implementierung zu etablieren. Dazu gehört unbedingt auch Erklären und Begründen.
25.07.2011
Matthias Hlawatsch 8,4k 2 8

Stelle deine Java-Frage jetzt!