ArrayList
em Java tem um get ( int index) . int
é um valor assinado de 32 bits, com um valor máximo de 2.147.483.647. Esse é o maior valor possível que pode ser acessado em ArrayList
. Período. As especificidades de qual o tamanho máximo do array
ou ArrayList
diferem com base na implementação da JVM (que pode ser menor que o valor MAX_INT
). Você não pode fazer um ArrayList
(ou, nesse caso, um int[]
array) que tenha um long
para seu índice.
Se você tentasse instanciar uma lista de matriz dessa magnitude, teria uma estrutura de pelo menos 8 gigabytes - isso representa apenas os ponteiros MAX_INT e não o espaço adicional dos dados em cada ponto.
A tentativa de acessar além do valor máximo permitido por meio de um iterador associado à matriz provavelmente resultaria em% deOutOfMemoryException
, IndexOutOfBoundsException
ou NoSuchElementException
dependendo da implementação.
Este é um uso muito impraticável da memória. Se alguém quiser essa estrutura de dados, deve-se investigar menos abordagens intensivas de RAM, como bancos de dados, matrizes esparsas e afins.