К вставить значение в ArrayList по определенному индексу, используйте:
public void add(int index, E element)
Этот метод сместит последующие элементы списка. но вы не можете гарантировать, что список останется отсортированным, поскольку новый объект, который вы вставляете, может находиться в неправильной позиции в соответствии с порядком сортировки.
Чтобы заменить элемент в указанной позиции, используйте:
public E set(int index, E element)
Этот метод заменяет элемент в указанной позиции в
список с указанным элементом, и возвращает элемент ранее
в указанной позиции.