Aumente o tamanho do array em Java

Mohammad Irfan 12 outubro 2023
  1. Aumente o tamanho de um array criando outro novo array em Java
  2. Aumente o tamanho do array usando o método Arrays.copyOf() em Java
  3. Aumente o tamanho do array usando o array ArrayList em Java
  4. Aumente o tamanho do array 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

Artigo relacionado - Java Array