A classe ArrayList em Java é basicamente um array redimensionável, ou seja, pode aumentar e diminuir de tamanho dinamicamente de acordo com os valores que adicionamos a ele. Ele está presente no pacote java.util .

Sintaxe:

ArrayList<E> list = new ArrayList<>();

Uma ArrayList em java pode ser instanciada uma vez com a ajuda da palavra-chave 'new' e pode ser referenciada por vários objetos / variáveis.

A figura acima mostra como o objeto 'list' aponta para o ArrayList dentro da memória. Agora vamos ver como podemos fazer outro objeto apontar para o mesmo ArrayList instanciado acima. 

Sintaxe: Duas variáveis ​​se referem à mesma ArrayList:

ArrayList<Integer> secondList = list;

Agora, quando atribuída a 'lista' à 'secondList', a 'secondList' também começa a apontar para a mesma ArrayList dentro da memória. Observe aqui simplesmente criar uma nova instância. Agora, para uma melhor compreensão, vamos mergulhar no código e ver alguns exemplos.

Abaixo está a implementação da declaração do problema:

// Java program to show how two objects can
// refer to same ArrayList in Java
  
import java.util.ArrayList;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // Creating an ArrayList of Integer type in Java
        ArrayList<Integer> list = new ArrayList<>();
  
        // Creating a new ArrayList object and making it
        // refer to the first ArrayList(list)
        ArrayList<Integer> secondList = list;
  
        // Inserting some Integer values to the
        // arrayList using list variable/object
        list.add(17);
        list.add(10);
        list.add(1);
        list.add(33);
        list.add(2);
  
        // ArrayList after insertions : [17, 10, 1, 33, 2]
  
        // Displaying the ArrayList
        System.out.print("ArrayList after insertions: ");
        display(list);
  
        // Modifying the ArrayList using secondList
  
        // Removing element from index 0
        secondList.remove(0);
  
        // Inserting Integer variables
        secondList.add(51);
        secondList.add(99);
  
        // ArrayList after modifications using
        // secondList: [10, 1, 33, 2, 51, 99]
  
        // Displaying the ArrayList
        System.out.print(
            "ArrayList after modifications using secondList: ");
        display(list);
    }
  
    // Function to display an ArrayList
    public static void display(ArrayList<Integer> list)
    {
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + " ");
        }
        System.out.println();
    }
}
Saída
ArrayList após as inserções: 17 10 1 33 2 
ArrayList após modificações usando secondList: 10 1 33 2 51 99