Java-массивы индексируются с помощью int, поэтому массив не может быть больше 2 ^ 31 (нет беззнаковых целых). Таким образом, максимальный размер массива составляет 2147483648, который потребляет (для простого int []) 8589934592 байта (= 8 ГБ).
Таким образом, int-index обычно не является ограничением, так как в любом случае вам не хватит памяти.
В вашем алгоритме вы должны использовать список (или карту) вместо структуры данных и выбрать реализацию списка (или карты), которая может выйти за пределы 2 ^ 31. Это может быть сложно, так как «обычная» реализация ArrayList (и HashMap) использует массивы внутри. Вам нужно будет реализовать собственную структуру данных; например используя двухуровневый массив (список / массив). Когда вы на это, вы также можете попытаться упаковать биты более плотно.