Если вам не нужна поддержка обновлений (что усложнит вашу проблему), рассмотрите возможность ввода IntFunction<T>
, чтобы указать отображение вместо Map<Integer,T>
Когда у вас естьMap
, вы можете передать map::get
, а когда у вас нет карты, у вас есть много простых способов указать отображение.Например, вы можете использовать лямбду для определения простой функции отображения, например:
IntFunction<T> mapper = v -> {
if (v < offset || v >= offset+array.length)
return null;
return array[v-offset];
}