Java: разделить список на два подсписка?

Какой самый простой, самый стандартный и / или самый эффективный способ разбить список на два подсписка в Java? Это нормально, чтобы изменить исходный список, поэтому не нужно копировать. Подпись метода может быть

/** 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);

[РЕДАКТИРОВАТЬ]List.subList возвращает представление в исходном списке, которое становится недействительным, если оригинал изменен. Такsplit не может использоватьsubList если он также не обходится без оригинальной ссылки (или, как в ответе Марка Новаковского, используетsubList но сразу копирует результат).

Ответы на вопрос(13)

Ваш ответ на вопрос