# Collections: List/ArrayList Kombination.Was für ein Sinn hat das?



## babuschka (25. Jan 2010)

Hallo Community,
habe gerade eine Übung durchgemacht: 


```
public class IteratorErweiterteForSchleife{
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        
	list.add("Hallo");
	list.add("Leute");
	list.add("von");
	list.add("Heute");

	for (String string : list) {
		System.out.println(string);
	}

    }
}
```


Meine Frage nun: Was für einen Sinn hat die 3. Zeile? 


```
List <String> list= new ArrayList<String>();
```

man muss ja List und ArrayList importieren. Aber warum machen wir das so? Warum importieren wir nicht nur ArrayList oder nur List? Was für einen Sinn hat das?

Also nicht:


```
ArrayList <String> list = new ArrayList<String>();
```

oder


```
List<String> list = new List<String>();
```


----------



## faetzminator (25. Jan 2010)

Letzteres funktioniert nicht, da [c]List[/c] nur ein Interface ist. Die strenge Typisierung von [c]ArrayList[/c] macht ebenfalls keinen Sinn. Um die Funktionalitäten von [c]ArrayList[/c] zu verwenden, benötigt man lediglich die Methoden, welche in [c]List[/c] definiert wurden.
Gehen wir z.B. davon aus, dass man die [c]ArrayList[/c] nachträglich in eine [c]LinkedList[/c] o.ä. abändern will. Mit der von dir geposteten Lösung ändere ich so eine Zeile. Ansonsten müsste je nach Situation viel Code geändert werden. Gerade bei Libs will man dies nicht. List ist List, der Programmierer kann auf [c]get()[/c] etc. zugreifen.


----------



## nrg (25. Jan 2010)

Polymorphie (Programmierung) ? Wikipedia


----------



## Landei (25. Jan 2010)

Stell dir vor, du hast eine Schreinerei und beschreibst, wie du einen Schrank zusammenbaust. Deine Schrauben sind genormt nach ISO0815. Schreibst du in eine Beschreibung "Schrauben 8x20mm der Firma Kunze aus gehärtetem Stahl nach ISO0815" oder "Schrauben 8x20mm nach ISO0815"? Hoffentlich letzteres, denn es völlig irrelevant, wer die Schrauben woraus nach welchem Verfahren herstellt, solange sie der "Norm" entspricht. Nimmst du ein andere Firma, willst du auch deine Beschreibung nicht ändern, oder? Genau diese Abstraktion leisten Interfaces wie List: Wenn du später eine andere Art von Listen verwenden willst, änderst du eine einzige Zeile. Oder schau in die Klasse java.util.Collections, dort gibt es eine sort-Methode für Listen. Hat man da eine eigene Variante für ArrayList, LinkedList, Vector, CopyOnWriteArrayList geschrieben? Nö, eine Methode kann alle Arten von Listen sortieren, sogar *deine eigene* Listen-Implementierung (wenn du alles richtig gemacht hast). Das funktioniert, indem man sich auf bestimmte Grundeigenschaften, Mindestanforderungen oder Normen einigt, und diese Art "Normvertrag" ist in Java eben ein Interface.


----------



## Landev (7. Jul 2021)

@Landei *HUST Amerikanische-Gleichschaltung"


----------



## mrBrown (7. Jul 2021)

Landev hat gesagt.:


> @Landei *HUST Amerikanische-Gleichschaltung"


Der Thread war 11 Jahre alt, Landei hat sich zum letzen Mal 2013 eingeloggt, und außer dir versteht vermutlich niemand, was du meinst...


----------



## kneitzel (7. Jul 2021)

mrBrown hat gesagt.:


> Der Thread war 11 Jahre alt, Landei hat sich zum letzen Mal 2013 eingeloggt, und außer dir versteht vermutlich niemand, was du meinst...


Aber es muss wichtig sein, wenn man sich dafür extra einen Account anlegt ...


----------



## mihe7 (8. Jul 2021)

Der Husten muss kurz und schwer gewesen sein, wenn man auf der Tastatur vom Anführungszeichen bis zum Stern verrutscht. Evtl. lindert es den Schmerz, wenn man anschließend "Amerikanische-Gleichschaltung" tippt. Das werde ich bei der nächsten Gelegenheit mal im Selbstversuch testen.


----------



## temi (8. Jul 2021)

Es handelt sich vermutlich um eine Art von Mantra. "Om mani padme hum" - "Amerikanische Gleichschaltung" - alles aus dem Sanskrit...


----------

