List list - anstatt ArrayList list = new ArrayList

Blakh

Bekanntes Mitglied
Ich zitiere mal aus http://www.java-forum.org/buecher-tutorials-links/9949-java-code-warnung.html.

In dem Buch wird wirklich hunderte von malen geschrieben
Code:

ArrayList variable = new ArrayList();
// oder
public void meineFkt(ArrayList argument)
// oder
HashMap myMap = new HashMap();
// oder
private HashMap memberVariable;

kann das wahr sein??????????????

dass jemand ein Buch für Fortgeschrittene schreibt und die allereinfachsten Dinge nicht beherrscht? Jeder Dorfdepp hätte
Code:

List variable = new ArrayList();
// oder
public void meineFkt(Collection argument)

gemacht (je nach Anforderung).

Was ist der Vorteil davon, dass ich z.B. List list = new ArrayList() anstatt ArrayList list = new ArrayList() verwende etc.?

mfg
 

Marco13

Top Contributor
Stichwort "Gegen das Interface Programmieren". Immer den Typ verwenden, der die jeweiligen Anforderungen "minimal" erfüllt. List ist allgemeiner als ArrayList. Wenn man sowas hat wie
Code:
void someMethod(ArrayList x) { ... }
Dann kann man die nicht mit
Code:
Vector v = new Vector();
someMethod(v);
aufrufen. Wenn sie
Code:
void someMethod(List x) { ... }
heißen würde, würde das gehen (Vector ist auch eine List).
 

Blakh

Bekanntes Mitglied
Das heißt ich soll immer sowas verwenden, solang ich nur die Methoden benötige die vom Interface vorgegeben sind? Oder gibt es da Ausnahmen?

List<Type> list= new CopyOnWriteArrayList<Type>();
 

Marco13

Top Contributor
Ja. Und wenn es nur ein Collection sein muss, dann
Collection<Type> collection = new CopyOnWriteArrayList<Type>();
Und wenn es nur ein Iterable sein muss, dann
Iterable<Type> iterable = new CopyOnWriteArrayList<Type>();
Und wenn es nur ein Object sein muss, dann
Object object = new CopyOnWriteArrayList<Type>(); :joke:
 

Blakh

Bekanntes Mitglied
Na denn pass ich meinen Code mal an :/. Ich lern im Forum echt mehr als beim Studium. Aber die Methoden werden schon trotzdem von CopyOnWriteArrayList verwendet?
 
Zuletzt bearbeitet:

Blakh

Bekanntes Mitglied
Und was mach ich bei variablen die auch zurückgegeben werden? Da weiß man ja nicht, ob man später Funktionen von ArrayList, List oder doch nur Collection benötigt.

Deklariere ich da gleich als ArrayList oder caste ich und return es ?
 
S

SlaterB

Gast
wenn du List statt ArrayList zurückgibst, musst du nicht casten,
bei Rückgabewert wie auch bei Variablendeklarationen würde ich, wenn nicht anders nötig, immer das bestimmende Interface verwenden,
ArrayList ist egal, das braucht man nahezu nie (Ausnahme bei mir: ArrayList ist serialisierbar, List als Interface nicht)

aber List statt Collection macht schon einen Unterschied,
wer eine List braucht und nur Collection bekommt (von anderer lokaler Variable oder Methoden-Rückgabewert),
erstellt vielleicht unnötig extra eine Kopie obwohl das Collection-Objekt auch schon eine Liste war,

im besonderen Maße zu vermeiden ist es, unbekannte komische Klassen zu verbreiten, wie CopyOnWriteArrayList
oder die Hibernate-API mit ihren unbekannten internen List-Typen
 

Blakh

Bekanntes Mitglied
Ok, also reicht ja List anstatt CopyOnWriteArrayList, wenn ich keine Serialisierbarkeit brauche und Collection, wenn ich es nicht mal zurückgebe, sondern nur als Listener-Liste verwende und remove, add, clear benötige.

Dankö
 

Marco13

Top Contributor
Unbekannt: In keinen "Was ist eigentlich Java?"-Tutorial wird sie erwähnt (im Gegensatz zu Vector...)
Komisch: =~= Speziell ;)

EDIT: Aber natürlich ist sie praktisch, nicht nur für Concurrency - insbesondere für Listener lege ich immer in so ein Ding...
 

Blakh

Bekanntes Mitglied
Die sind halt nicht so gebräuchlich wie ArrayList und im Grunde sind nur die Methoden des List-Interfaces vorhanden wie bei der ArrayList eben auch.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
B Vektor vs List Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
T Linked List set-Methode Java Basics - Anfänger-Themen 2
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
L Datentypen Array List Java Basics - Anfänger-Themen 9
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
G Linked list, Methode zum Vertauschen von Elementen Java Basics - Anfänger-Themen 14
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
W Stream Array List - Frage Java Basics - Anfänger-Themen 5
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
X Array List geordnet ausgeben. (JSF und JAVA) Java Basics - Anfänger-Themen 1
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
M List<String> auswählen Java Basics - Anfänger-Themen 42
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
T HashSet in List-Object Java Basics - Anfänger-Themen 5
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
E Array-list mit einer bestimmten Länge Java Basics - Anfänger-Themen 17
B Sorting List und Remove Java Basics - Anfänger-Themen 2
B String: suche nach Wörter und in List<String> speichern Java Basics - Anfänger-Themen 3
M Methode überladen - Array List Java Basics - Anfänger-Themen 5
L LIST.ADD Java Basics - Anfänger-Themen 2
M XWPF - Bullet Point list erstellen Java Basics - Anfänger-Themen 1
I <List> sortieren Java Basics - Anfänger-Themen 2
N Klassen List-Art Java Basics - Anfänger-Themen 5
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
Salo Datentypen "Doppelt" List(e) ("gesucht") Java Basics - Anfänger-Themen 6
F .csv Export aus einer list Java Basics - Anfänger-Themen 25
T KlausurÜbung- Förderband-Linked List Java Basics - Anfänger-Themen 53
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
T List und ArrayList Java Basics - Anfänger-Themen 3
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
T Datentypen InputStream to list of Int (or similar) Java Basics - Anfänger-Themen 4
D Input/Output CSV Parser list unvollständig Java Basics - Anfänger-Themen 25
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
S Methoden Linked List Methoden können nicht aufgerufen werden Java Basics - Anfänger-Themen 1
U JAXB - List wird nicht ausgefüllt Java Basics - Anfänger-Themen 1
L Linked List - Array List Java Basics - Anfänger-Themen 2
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
D Bestimmten Wert aus Array List ausgeben Java Basics - Anfänger-Themen 7
V Personenverwaltung mit List<>, falsche Ausgaben Java Basics - Anfänger-Themen 5
M List befüllen Java Basics - Anfänger-Themen 3
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
A Wie nutze ich List<List<String>> Java Basics - Anfänger-Themen 4
M Endlos schleife in List Java Basics - Anfänger-Themen 5
P Zufallszahlen ohne zahlen einer List Java Basics - Anfänger-Themen 21
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
S Probleme bei Ausgabe von rekursiver Methode (List) Java Basics - Anfänger-Themen 16
T Tabstopp in AWT-List? Java Basics - Anfänger-Themen 8
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
M Wozu Upcasting? Am Beispiel List = ArrayList Java Basics - Anfänger-Themen 2
A List mit integern füllen Java Basics - Anfänger-Themen 4
D sortieren von List<> Java Basics - Anfänger-Themen 2
B List - Drag&Drop Java Basics - Anfänger-Themen 8
SexyPenny90 Implementierung einer doubly linked list Java Basics - Anfänger-Themen 5
G Linked List Programm add Problem Java Basics - Anfänger-Themen 5
C List Abfragenproblem Java Basics - Anfänger-Themen 3
J List als anonyme Klasse Java Basics - Anfänger-Themen 9
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
F Wozu braucht man array list? Java Basics - Anfänger-Themen 29
T Collections Wie funktioniert List() ? Java Basics - Anfänger-Themen 7
Kenan89 Java Date List Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
K Frage Set List Java Basics - Anfänger-Themen 3
M Array List ausgeben Java Basics - Anfänger-Themen 13
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
S Gute List Implementation Java Basics - Anfänger-Themen 5
S Synchronisieren einer Linked List Java Basics - Anfänger-Themen 16
A List Array - wie instanzieren Java Basics - Anfänger-Themen 7
T List mit mehreren gleichen Strings bereinigen Java Basics - Anfänger-Themen 4
R List to BinaryTree Java Basics - Anfänger-Themen 13
P Set mit List vergleichen Java Basics - Anfänger-Themen 8
Binary.Coder List bzw. ArrayList als String ausgeben Java Basics - Anfänger-Themen 2
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31
T List.add(Object) führt zu NullPointerException Java Basics - Anfänger-Themen 14
M Collections Cast bei ArrayList (List) Java Basics - Anfänger-Themen 2
H Remove Methode von List Java Basics - Anfänger-Themen 6
T Datentypen List<?> Java Basics - Anfänger-Themen 5
E Linked List generisch Java Basics - Anfänger-Themen 5
S Einen neuen String ohne Array oder List erzeugen??? Java Basics - Anfänger-Themen 13
S List angaben in textfelder Java Basics - Anfänger-Themen 7
D List<String[]> initialisieren Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben