List è un interfaccia e definisce un contratto per un qualsiasi tipo di lista. Contratto nel senso che essa ti dice che metodi deve avere una lista: l'implementazione è demandata al programmatore. In questo modo è possibile definire liste di tipo diverso che comunque sono intercambiabili.
Ad esempio, dato questo metodo:
codice:
public void foo(List list) {
list.add("1");
list.add("2");
list.add("3");
}
tu puoi fare sia
codice:
ArrayList arrayList = new ArrayList();
foo(arrayList);
che
codice:
LinkedList linkedList = new LinkedList();
foo(linkedList);
Questo permette un alto disaccopiamento del codice, rendendolo più modulare e riutilizzabile.