Столкнулся с такой проблемой: есть лист который содержит элементы
List<Integer> mainList = Arrays.asList(1, 0, 0, 0);
Мне необходимо использовав как можно меньше обьёма памяти и процессорного времени заменить все элементы данного листа с заданого индекса (в данном случае с индекса 1, то есть со второго элемента) до конца листа (или же до заданого конечного элемента). Ничего кроме как сделать так я не придумал
List<Integer> subList = Arrays.asList(3, 2, 1);
for (int i = 0; i < subList.size(); i++) {
    mainList.set(i + 1, subList.get(i));
 }

// необходимый конечный результат 1, 3, 2, 1
Но это слишком затратный способ как по времени выполнения, так и по ресурсам. Может есть идеи по лучше?