unterschied list und arraylist?

Status
Nicht offen für weitere Antworten.

dermoritz

Bekanntes Mitglied
theoretisch weiß ich glaub den unterschied: arraylist ist eine konkrete implementierung von list. Aber praktisch raff ich das nicht.
Wofür sollte man sich auf z.B ArrayList festlegen wenn doch List reicht? Also warum überhaupt ArrayList verwenden. Praktisch funktioniert das ja nicht ohne weiteres: Collection<T> liste=new List<T>; funzt ja nicht oder?

jetzt frag ich mich aber wie bestimmte methoden als ergebnis eine List zurückgeben (z.b. diverse jdom methoden) können bzw. wie implementiert man sowas.
Also ich hätte gern ein Methode die eine List zurückgibt und eben nicht eine ArrayList.

Es geht hier tatsächlich nicht um das Lösen eines konkreten Problems sondern vielmehr um eine Verständnisfrage.

und noch eine ähnlich gelagerte frage:
wo ist der praktische unterschied zwischen:

Collection<T> liste=new ArrayList<T>;
List<T> liste=new ArrayList<T>;
 
S

SlaterB

Gast
Ein Autohändler kann behaupten, dass er Autos verkauft/ dass bei einem seiner Geschäfte genau ein Auto den Besitzer wechselt.
Trotzdem kann man dieses Auto nicht anfassen, es ist entweder ein Mercedes Typ X oder ein VW Typ Y.
'Auto' ist hier nur ein allgemeiner Begriff, der an bestimmten Stellen Sinn macht.

Genau wie ein Interface in Java nicht als Objekt erzeugt werden kann,
aber trotzdem kann es als Rückgabewert einer Operation verwendet werden.
Das heißt, dass irgendeine Liste zurückgegeben wird, sei es ArrayList oder eine andere.
 

hupfdule

Top Contributor
Du hast das schon richtig erkannt.
ArrayList ist eine konkrete Implementierung, während List halt nur die Schnittstelle definiert.

Wofür sollte man sich auf z.B ArrayList festlegen wenn doch List reicht? Also warum überhaupt ArrayList verwenden. Praktisch funktioniert das ja nicht ohne weiteres: Collection<T> liste=new List<T>; funzt ja nicht oder?

Richtig, eben weil List keine Klasse ist. Du brauchst eine Klasse, die das List-Interface implementiert. Welche das ist, ist erst mal egal. Und das wichtige: Jede Implementierung verhält sich nach außen hin gleich, da sie alle als List auftreten.
Die Frage ist jedoch nicht List oder ArrayList, sondern ArrayList oder LinkedList oder Stack oder ....
Welche davon du nimmst, ist abhängig von der Nutzungsweise der List. Im Zweifelsfall ist ArrayList schon die richtige Wahl.

jetzt frag ich mich aber wie bestimmte methoden als ergebnis eine List zurückgeben (z.b. diverse jdom methoden) können bzw. wie implementiert man sowas.
Also ich hätte gern ein Methode die eine List zurückgibt und eben nicht eine ArrayList.

Das geht quasi automatisch. Statt
Code:
public ArrayList getList(){
    return new ArrayList();
}
schreibst du halt
Code:
public List getList(){
    return new ArrayList();
}

Der Unterschied ist nur in der Signatur. Dem Benutzer deiner Methode ist also die tatsächliche Implementierung egal. Wichtig ist nur, dass er eine List bekommt.

Collection<T> liste=new ArrayList<T>;
List<T> liste=new ArrayList<T>;

Collection ist etwas rudimentärer als List. List ist eine geordnete Liste, auf die du auch wahlfrei zugreifen kannst. Eine Collection ist nur eine Sammlung von Objekten in beliebiger Reihenfolge, die du mit einem Iterator durchlaufen kannst.

Wenn du weißt, dass du eine Reihenfolge in deiner Liste brauchst, dann gib sie als List zurück.
 
B

Beni

Gast
Vielleicht hilft auch ein anderes Beispiel:

Collection = Nahrung
List = Frucht
ArrayList = Apfel
LinkedList = Banane

Du kannst niemals eine "Frucht" einfach so erstellen, aber du kannst einen Apfel mit "Frucht" anschreiben. Und jede Frucht ist natürlich auch Nahrung.

Ein unbekanntes Projekt könte jetzt auch noch weitere Früchte einbringen...
 

dermoritz

Bekanntes Mitglied
danke,


aber wie funktioniert das praktisch, wie sieht eine methode aus die eine List zurückgibt. Kann eine List auch ein Attribut einer Klasse sein? ich kann ja keine new List machen und sie füllen. wie machen das diese Methoden?
Die müssen doch auch ein Objekt erzeugen und es füllen?

mich hat halt verwirrt, dass es solche Methoden gibt aber ich gleichzeitig ich sowas nicht (so einfach) nachbauen kann.
 
B

Beni

Gast
Solche eine Methode ist ganz einfach:
Code:
public List<String> etwas(){
  List<String> list = new LinkedList<String>();
  list.add( "a" );
  list.add( "b" );
  return list;
}
 

dermoritz

Bekanntes Mitglied
:) danke das bringt licht ins dunkel.

das heißt jede methode die etwas abstraktes wie List oder Collection zurückgibt benutzt intern eine konkrete Implementierung?

Welchen Vorteil hat es din so einem Fall eigentlich eine List zurückzugeben und eben nicht z.b. eine LinkedList wie in deinem Beispiel?
Und wann und warum könnte man eine Collection zurückgeben?
 

cburghardt

Mitglied
dermoritz hat gesagt.:
:) danke das bringt licht ins dunkel.

das heißt jede methode die etwas abstraktes wie List oder Collection zurückgibt benutzt intern eine konkrete Implementierung?
Jawollja.

dermoritz hat gesagt.:
Welchen Vorteil hat es din so einem Fall eigentlich eine List zurückzugeben und eben nicht z.b. eine LinkedList wie in deinem Beispiel?
Weil du die Implementierung dann intern auch noch nachträglich ändern kannst, ohne dass sich die Aufrufer darum kümmern müssten. Wenn du als Rückgabewert ArrayList definierst und plötzlich feststellst, dass deine Liste die Eigenschaften von Vector braucht, würde das nicht gehen. Aber wenn du List zurückgibst, ist das kein Problem.
 
S

SlaterB

Gast
insbesondere sollte der Aufrufer auch gar nicht wissen müssen, welche Liste da nun genau kommt,
ein Datenbank-Treiber könnte irgendeine verrückte interne Listen-Spezial-Implementierung verwenden,
eine Klasse die nicht mal public ist, die die Aufrufer gar nicht importieren kann
 
M

maki

Gast
SlaterB hat gesagt.:
insbesondere sollte der Aufrufer auch gar nicht wissen müssen, welche Liste da nun genau kommt,
ein Datenbank-Treiber könnte irgendeine verrückte interne Listen-Spezial-Implementierung verwenden,
eine Klasse die nicht mal public ist, die die Aufrufer gar nicht importieren kann
Hibernate zB. macht genau das mit zB. Set (und List?), implementiert eine eigene Version.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0
C Unterschied Objekte! Java Basics - Anfänger-Themen 13
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
R Erste Schritte Unterschied Array-Parameter zu Array als Parameter? Java Basics - Anfänger-Themen 7
V Unterschied Array & ArrayList Java Basics - Anfänger-Themen 13
D Geschwindigkeits unterschied bei import? Java Basics - Anfänger-Themen 13
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
L Unterschied zu C++ Java Basics - Anfänger-Themen 6
A Unterschied JDK SDK Java Basics - Anfänger-Themen 4
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
S Interface Unterschied: setContentPane() & getContentPane().add Java Basics - Anfänger-Themen 5
Helgon Unterschied runnable und normale jar Java Basics - Anfänger-Themen 6
D Unterschied bidirectional unidirectional Java Basics - Anfänger-Themen 10
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
I Unterschied Lizenz EPL und LGPL Java Basics - Anfänger-Themen 7
P Unterschied Windowclosed / WindowClosing Java Basics - Anfänger-Themen 10
J scheduleAtFixedRate scheduleWithFixedDelay Unterschied? Java Basics - Anfänger-Themen 17
S Erste Schritte Grundsatzfragen Unterschied Java / PHP Java Basics - Anfänger-Themen 6
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
H printf: Unterschied %f und %g Java Basics - Anfänger-Themen 5
M Unterschied SDK 1.4 und 1.6 Java Basics - Anfänger-Themen 5
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
T Unterschied in Zahlendarstellungen Java Basics - Anfänger-Themen 2
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
K Unterschied Klassen- und Instanzattribute Java Basics - Anfänger-Themen 4
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
J Instanzvariablen - Lokale Variablen - warum der Unterschied? Java Basics - Anfänger-Themen 5
P Unterschied dieser 2 code Zeilen Java Basics - Anfänger-Themen 12
I Datentypen Unterschied in Deklaration von ArrayList Java Basics - Anfänger-Themen 26
G Unterschied e extends y vs ? extends y Java Basics - Anfänger-Themen 5
M Unterschied append / write aus der Klasse Writer Java Basics - Anfänger-Themen 2
M unterschied OutpuStreamWriter und BufferedWriter Java Basics - Anfänger-Themen 5
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
J Unterschied Instanzattribut und Referenzvariable Java Basics - Anfänger-Themen 4
J Unterschied bei Schleifen Java Basics - Anfänger-Themen 2
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
W Unterschied JFrame und JLabel bezüglich Layout? Java Basics - Anfänger-Themen 2
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
B ArrayList generisch? was ist der Unterschied? Java Basics - Anfänger-Themen 4
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
D Unterschied innere Klasse/ anonyme innere Klasse Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben