Aumente o tamanho do array em Java
- Aumente o tamanho de um array criando outro novo array em Java
-
Aumente o tamanho do array usando o método
Arrays.copyOf()
em Java -
Aumente o tamanho do array usando o array
ArrayList
em Java - Aumente o tamanho do array em Java
Este tutorial apresenta como aumentar o tamanho de um array em Java. Você também tem alguns códigos de exemplo para ajudá-lo a entender o tópico.
Um array em Java é uma coleção finita de dados do mesmo tipo. As matrizes têm tamanho fixo e seu comprimento não pode ser modificado após sua criação. É porque os arrays são armazenados na memória como blocos contíguos de dados
.
O usuário deve predefinir seu tamanho para garantir que a quantidade de memória necessária esteja disponível de forma contígua. Neste guia, você conhecerá as diferentes maneiras de lidar com o problema de arrayes de comprimento fixo.
Vamos primeiro ver o que acontece quando tentamos adicionar elementos a um array sem espaço extra. Normalmente adicionamos itens a um array acessando seu índice. Se tentarmos adicionar um item a um array já cheia usando o próximo índice, o Java retornará uma ArrayIndexOutOfBoundsException
.
O código a seguir é um exemplo de tal cenário.
public class Main {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0] = 5;
arr[1] = 10;
arr[2] = 15;
arr[3] = 20; // Index 3 is out of bounds
}
}
Produção:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at abc.Demo.main(Demo.java:13)
Agora, vamos tentar entender como superar esse problema.
Aumente o tamanho de um array criando outro novo array em Java
Uma solução simples para o tamanho fixo do array é criar outro array com um tamanho maior.
Podemos usar uma variável de contador para controlar o número de elementos inseridos no array. Sempre que esse número se torna igual ao comprimento do array (indicando que o array está cheio), podemos criar um novo array com um tamanho maior do que o array original.
Em seguida, vamos transferir todos os elementos do array original para o novo array e ainda ter um espaço extra para um novo elemento. Podemos repetir este processo se recebermos um novo elemento e não tivermos espaço suficiente para ele.
Considere o código a seguir, onde criamos um array de comprimento 5
e tentamos inserir elementos 7
nele. Sempre que o array fica cheio, aumentamos seu tamanho usando nosso método boostSize()
.
public class Main {
public static int[] increaseSize(int[] arr) {
int[] newArr = new int[arr.length + 1]; // Creating a new array with space for an extra element
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i]; // Copying the elements to the new array
}
return newArr;
}
public static void main(String[] args) {
int[] arr = new int[5];
int counter = 0;
for (int i = 0; i <= 6; i++) {
if (counter == arr.length) {
arr = increaseSize(arr);
}
arr[i] = i * 2;
counter += 1;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
Produção:
0 2 4 6 8 10 12
Aumente o tamanho do array usando o método Arrays.copyOf()
em Java
Java possui um método copyOf()
integrado que pode criar um novo array de um tamanho maior e copiar nossos elementos antigos do array para o novo.
A função copyOf()
pertence à classe Arrays
. A sintaxe desse método é mostrada a seguir. Ele retorna um array do comprimento mencionado que contém todos os elementos do array original.
copyOf(originalArray, newLength)
O código a seguir é semelhante ao mencionado acima. A única diferença é que estamos usando o método copyOf
em vez do método increaseSize()
.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = new int[5];
int counter = 0;
for (int i = 0; i <= 6; i++) {
if (counter == arr.length) {
int[] newArr = Arrays.copyOf(arr, arr.length + 1);
arr = newArr;
}
arr[i] = i * 2;
counter += 1;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
Produção:
0 2 4 6 8 10 12
Aumente o tamanho do array usando o array ArrayList
em Java
Um ArrayList
é um array dinâmico encontrado no pacote java.util
e implementa a interface List
. Ao contrário de um array normal, um ArrayList
tem um comprimento variável.
Java lida automaticamente com o tamanho deste array dinâmico, e não precisamos nos preocupar em ficar sem espaço no array. Seu tamanho padrão é 10
elementos, mas aumentará de tamanho se mais elementos forem adicionados.
A tabela a seguir explica algumas das principais diferenças entre um array e uma ArrayList
.
Array | ArrayList |
---|---|
Os arrays não são redimensionáveis e sempre terão um comprimento fixo após a criação. | ArrayList é um array de tamanho variável e seu tamanho aumentará dinamicamente se espaço adicional for necessário. |
Os arrays podem conter objetos e tipos de dados primitivos. | ArrayList só pode armazenar objetos e não tipos de dados primitivos. Os tipos de dados primitivos são convertidos nos objetos correspondentes antes de adicioná-los à lista. (int para inteiro, duplo para duplo) |
O desempenho dos arrays é melhor do que ArrayList , pois os elementos podem ser adicionados, removidos ou buscados usando índices em tempo constante. |
ArrayLists são um pouco mais lentos do que os arrays, pois precisam ser redimensionados se precisarmos de espaço adicional. |
Um elemento pode ser acessado usando seu índice. | Existem métodos dedicados como get() , set() ou add() para acessar e modificar elementos em ArrayList . Não podemos usar índices diretamente entre colchetes para acessar os elementos. |
O código a seguir explica como usar ArrayLists
e realizar operações básicas como adicionar um elemento, modificar um elemento e imprimir os valores da lista.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) { // Creating a new ArrayList to hold Integer values
ArrayList<Integer> arrList = new ArrayList<Integer>();
// Adding elements 5, 10, 15 and 20 to the ArrayList
arrList.add(5);
arrList.add(10);
arrList.add(15);
arrList.add(20);
// Printing the ArrayList
System.out.println(arrList);
// Adding an element 7 at index 2. This will shift the rest of the elements one place to the
// right
arrList.add(2, 7);
System.out.println(arrList);
// Fetching the element at index 3
System.out.println(arrList.get(3));
// Changing the element present at index 1 to 17
arrList.set(1, 17);
System.out.println(arrList);
}
}
Produção:
[5, 10, 15, 20]
[5, 10, 7, 15, 20]
15
[5, 17, 7, 15, 20]
O cenário em que estávamos tentando adicionar elementos 7
a um array de comprimento 5
pode ser facilmente resolvido usando ArrayLists
. Lembre-se de que não podemos usar tipos de dados primitivos como int
em ArrayLists
, então usamos a classe wrapper Integer
.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrList = new ArrayList<Integer>();
for (int i = 0; i <= 6; i++) {
arrList.add(i * 2);
}
for (int i = 0; i < arrList.size(); i++) {
System.out.print(arrList.get(i) + " ");
}
}
}
Produção:
0 2 4 6 8 10 12
Aumente o tamanho do array em Java
Um array é uma estrutura de dados básica, mas extremamente importante e útil. Uma limitação dos arrays é que eles têm tamanho fixo e não podem aumentar dinamicamente.
Neste tutorial, aprendemos como aumentar o tamanho de um array. Podemos criar um novo array de tamanho maior e copiar o conteúdo do array antigo para o novo. A melhor e mais simples solução é usar ArrayLists
, pois eles podem aumentar seu tamanho dinamicamente.
Esperamos que este guia tenha sido muito útil e você tenha aprendido algo novo em Java.
Artigo relacionado - Java Variable
- Acesse uma variável de outra classe em Java
- Crie uma variável global em Java
- Inicializar Variáveis Múltiplas em Java