Was ist der Unterschied zwischen Collection und List?

Eine java.util.Collection ist ein Interface für eine Sammlung von Daten. Das Collection-Interface bietet keine Möglichkeit, indiziert auf die Elemente der Collection zuzugreifen. Das Collection-Interface implementiert das Iterable-Interface und ermöglicht damit den Zugriff auf alle Elemente der Collection.

Datenstrukturen die das Collection-Interface implementieren sind: List, Set, Queue, …

Im folgenden Beispiel wird gezeigt, wie man mit einem Iterator über eine Collection iteriert:

Collection<Integer> c = new HashSet<>();
c.add(123);
c.add(456);

Iterator<?> it = c.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

Eine einfachere Möglichkeit über eine Collection zu iterieren ist die verkürzte for-Schleife. Auch hier wird intern mit einem Iterator gearbeitet.

for (Integer n : c) {
    System.out.println(n);
}

Auch die List implementiert das Collection-Interface und bietet darüber hinaus die Möglichkeit, indiziert (wie bei einem Array) auf die Daten zuzugreifen:

List<Integer> li = new ArrayList<>();
li.add(123);
li.add(456);
for (int i = 0; i < li.size(); i++) {
    System.out.println(li.get(i));
}