Вы пытаетесь использовать ArrayList в качестве карты, поэтому просто переключитесь на Map и держите ваши ключи как целые числа:
Map<Integer, Object> map = new HashMap<>(size);
map.put(index, values.get(leftFirst));
, а затем получить индекс методом map.get :
map.get(index)
Обратите внимание, что если ваш индекс начинается с миллиона, у вас будет ~ миллион нулевых значений, которые не будут использоваться. это кажется очень ненужным и неправильно реализованным.
EDIT
из комментариев / вопроса, объявите вашу карту, используя T
:
Map<Integer, T> map = new HashMap<>(size);