Я пытаюсь создать массив long в java, но eclipse показывает мне ошибку, как показано ниже:
Ниже мой код:
Как я могу это решить?
Не удается создать массив длинного размера в java?
Я пытаюсь создать массив long в java, но eclipse показывает мне ошибку, как показано ниже:
Ниже мой код:
Как я могу это решить?
Не удается создать массив длинного размера в java?
Массивы длинны в порядке: long[]
. Но все массивы int
-indexed.. Просто измените long n
на int n
в объявлении параметра метода, и все будет установлено.
Для индекса вам нужно использовать int
, но не long
n
(емкость массива) должна быть integer
not long
У вас есть мое сочувствие. Мы просматриваем это каждый раз, когда размеры памяти увеличиваются. Существует странное ожидание того, что размеры массива этого не будут увеличиваться параллельно с размерами памяти.
Лучшим решением, вероятно, является создание собственного класса с помощью методов long get(long index)
и void set(long value, long index)
. Он может представлять данные как длинные [10] [1000000000] и инкапсулировать отображение между естественным длинным индексом и фактической парой индексов int.
Мне нужен массив из 10 ^ 9 элементов
Вы можете создать массив из миллиарда, используя значение int
. Сделайте n
int, и вы можете создать массив с new long[n]
Примечание: это будет использовать 8 ГБ кучи.
Поскольку вы строите все элементы с помощью формулы, вы должны иметь возможность динамически приводить все значения. т.е. создать компонент, который является "виртуальным" массивом, который спасет вас от необходимости генерировать массив из них.
Я указываю на то, что второй цикл, скорее всего, займет минуты в лучшем случае, если k
очень мал или может легко занять дни.
BTW: я не вижу весь код, но кажется, что вам не нужно больше, чем k+1
значений, которые могут быть выделены один раз вместо n-k
раз.