Альтернативы для проблем, связанных с индексацией очень больших массивов, сохраняющих очень большие значения

Пожалуйста, предложите некоторые альтернативы для решения проблем, в которых решение грубой силы использует массивы с очень большим индексом и хранит очень большие значения (очень большие значения за пределами диапазона INT). Я использую Java для решения этой проблемы.

Пример задачи: положить большое количество камешков в очень большую группу ведер, а затем вычислить среднее количество камешков в каждом ведре.

Один из способов - объявить большой массив и продолжать размещать камешки в соответствии с индексами, указанными пользователем, а затем вычислять среднее значение. Но таким образом мы будем использовать большое пространство для такого массива.


person iElixir    schedule 01.04.2014    source источник
comment
Вы можете использовать некоторые файловые реализации Collection.   -  person Vlad    schedule 01.04.2014


Ответы (1)


Если массив разреженный, одним из вариантов может быть Map от индекса к значению.

Если все данные по-прежнему помещаются в память, а индекс выходит за пределы диапазона int, вы можете рассмотреть массив массивов. Первичный массив может содержать массивы размером, скажем, 1000000000. 0-й индекс в этом массиве будет содержать значения 0-999999999, 1-й индекс 1000000000-1999999999 и т. д.

Другой альтернативой является использование файлов. RandomAccessFile может помочь сделать это вручную, или могут быть некоторые библиотеки, которые предоставляют вам интерфейс массива и заботятся о файловом вводе-выводе за кулисами.

person Bernhard Barker    schedule 01.04.2014