Java: ¿dividir una lista en dos sublistas?

¿Cuál es la forma más simple, más estándar y / o más eficiente de dividir una Lista en dos sublistas en Java? Está bien mutar la lista original, por lo que no debería ser necesario copiarla. La firma del método podría ser

/** Split a list into two sublists. The original list will be modified to
 * have size i and will contain exactly the same elements at indices 0 
 * through i-1 as it had originally; the returned list will have size 
 * len-i (where len is the size of the original list before the call) 
 * and will have the same elements at indices 0 through len-(i+1) as 
 * the original list had at indices i through len-1.
 */
<T> List<T> split(List<T> list, int i);

[EDITAR]List.subList devuelve una vista en la lista original, que se invalida si se modifica el original. Entoncessplit no puede usarsubList a menos que también prescinda de la referencia original (o, como en la respuesta de Marc Novakowski, usesubList pero inmediatamente copia el resultado).

Respuestas a la pregunta(13)

Su respuesta a la pregunta