Eu queria saber como inicializar uma matriz de inteiros de modo que seu tamanho e valores mudem durante a execução do meu programa, alguma sugestão?
Sim: use ArrayList .
Em Java, os arrays "normais" têm tamanho fixo. Você tem que dar um tamanho a eles e não pode expandi-los ou contraí-los. Para alterar o tamanho, você precisa fazer uma nova matriz e copiar os dados desejados - o que é ineficiente e uma dor de cabeça.
Felizmente, existem todos os tipos de classes integradas que implementam estruturas de dados comuns e também outras ferramentas úteis. Você vai querer verificar a API Java 6 para obter uma lista completa deles.
Uma advertência: ArrayList só pode conter objetos (por exemplo, inteiros), não primitivos (por exemplo, ints). Na MAIORIA dos casos, autoboxing / autounboxing cuidará disso para você silenciosamente, mas você pode ter um comportamento estranho dependendo do que estiver fazendo.
int[] array = new int[size];
size
é uma variável, mas o comprimento de um array deve ser fixo, certo? @Lord Torgamussize
medida que o programa prossegue; ele obtém qualquer tamanho que estejasize
quando a linha for executada.null
no final. Alguma ideia por quê?Arrays em Java são de tamanho fixo. O que você precisa é de um ArrayList, uma das várias coleções extremamente valiosas disponíveis em Java.
Ao invés de
você usa
Em seguida, para alterar a lista que você usa
ints.add(y)
eints.remove(z)
entre muitos outros métodos úteis, você pode encontrar nos Javadocs apropriados.Eu recomendo fortemente estudar as classes de coleções disponíveis em Java, pois elas são muito poderosas e fornecem muitas funcionalidades embutidas que os novatos em Java tendem a tentar reescrever desnecessariamente.
fonte
List<Integer>
vez deArrayList<Integer>
?Os arrays têm tamanho fixo depois de instanciados. Você pode usar uma lista em vez disso.
O Autoboxing torna uma List utilizável de forma semelhante a uma matriz, você pode simplesmente colocar valores int nela:
fonte
Não concordo com a sugestão de respostas anteriores
ArrayList
, porque nãoArrayList
é um Dynamic Array, mas uma List apoiada por um array. A diferença é que você não pode fazer o seguinte:Isso lhe dará uma IndexOutOfBoundsException porque não há nenhum elemento nesta posição ainda, embora a matriz de apoio permitiria tal adição. Portanto, você precisa usar uma implementação de Array extensível personalizada, como sugerido por @ randy-lance
fonte
Fonte: Como fazer array dinâmico
fonte
Recomenda-se usar List para lidar com tamanhos de pequena escala.
Se você tiver um grande número de números, NUNCA use List e autoboxing,
Lista lista <Inteiro>
Para cada int, um novo Integer é criado automaticamente. Você perceberá que fica lento quando o tamanho da lista aumenta. Esses inteiros são objetos desnecessários. Nesse caso, usar um tamanho estimado seria melhor,
fonte
Que tal usar um
List
? Por exemplo,ArrayList<integer>
fonte
Você não pode alterar o tamanho de uma matriz. Você pode, no entanto, criar um novo array com o tamanho certo e copiar os dados do array antigo para o novo.
Mas sua melhor opção é usar o IntList do jacarta commons. ( aqui )
Funciona como uma List, mas ocupa menos espaço e é mais eficiente do que isso, porque armazena int's em vez de armazenar objetos de invólucro em vez de int's (é isso que a classe Integer é).
fonte
Eu respondi a esta pergunta e não, você não precisa de um arraylist ou qualquer outra coisa, isso foi uma atribuição e eu concluí, então sim os arrays podem aumentar de tamanho. Aqui está o link Como usar Java Dynamic Array e aqui está o link para minha pergunta que respondi Java Dynamic Arrays
fonte