Tamanho maximo do array [RESOLVIDO]

Pessoal é o seguinte…

To fazendo umas paradas estatisticas… criando possibilidades e talz…

dai num metodo que criei aki o numero ficou mto grande, ou seja, estourou o int…

entaum eu teria que usar long… mas, eu estou usanto arrays… e como todos devem saber, array deve ser inicializado com int.

Daí vem as perguntas:

List, e outros tipos de implementação dinamica de listas, tem limite de indices?

Alguma Forma de criar List de arrays?

Não entendi o “array deve ser inicializado com int”. Um exemplo com long:

public class ArrayTest {
    public static void main(String args[]) {
        long[] meuArray = {1l, 2l, 3l};
        for ( int i = 0; i < meuArray.length; i++ ) {
            System.out.println(meuArray[i]);
        }
    }
}

Abraço.

1 curtida

exato wagnerfrancisco mas, eu precisava de um array maior que um int.

De qualquer forma agradeço a atenção.

humm, JM4X, agora entendi o que você tinha dito. Achei que teu problema era pra criar um array com elementos do tipo long.

Eu acredito que não tenha limite especificado pra Listas. O inconveniente é que métodos que usam/retornam o índice usam int ao invés de long. E o método size() tb. Mas se colocar mais elementos, eles são inseridos até que se tenha memória disponível (fiz um teste com arraylist e foi o que aconteceu).

Falou.

Ah cara, consegui solucionar de outra forma, na verdade o numero estava excedendo devido a uns erros de cast.

Obrigado!!!

O java só permite indexação de 32 bits, portanto, todos os arrays estarão limitados ao tamanho int. Isso inclui o ArrayList (talvez não o LinkedList).

Entretanto, numa lista dessas você pode ter 2.147.483.648 elementos e, se cada elemento ocupar um mísero byte, já serão necessários 2 gigas para armazenar essa lista. Com 1 int (4 bits) por elemento, 8 gigas.

Portanto, certamente seu problema não era o índice ser int, mas um erro de seu programa.

tem razão vini, o problema era que eu deveria realizar um cálculo de números grandes, e o resultado desse cálculo seria utilizado para inicializar o array[], a solução foi utilizar long nos cálculos e somente no final (que seria um numero pequeno) fazer um casting para int, assim podendo usar o resultado para inicializar o array.

obrigado a todos pela atenção.

1 curtida