É possivel instanciar ArrayList dinamicamente em java?

Por exemplo, se eu precisar criar ArrayList para cada pessoa que se cadastra no meu sistema:

ArrayList pessoa1 ArrayList();
ArrayList pessoa2 ArrayList();
ArrayList pessoa3 ArrayList();

O problema é que não sei quantas pessoas vão se cadastrar, então, teria que ser criado dinamicamente, tipo:

for(int i = 0; i < numeroPessoasCadastradas; i++)
{
    pessoa[i] = mew ArrayList();
}

Porem quando executei me retornou um erro:

Exception in thread "main" java.lang.NullPointerException

É possivel fazer algo desse tipo?

1 curtida

É só fazer uma matriz com ArrayList, ou seja, uma lista de listas.

List<List> pessoas= new  ArrayList<>();
for(int i = 0; i < numeroPessoasCadastradas; i++){
    List<String> pessoa = new ArrayList();
    //dados
    pessoas.add(pessoa);
}

Observações:

  • é um tanto quanto exótica esta abordagem de ter dados de “pessoas” em uma lista, a não ser que lhe foi solicitado que seja assim (oque também não justifica), o padrão convencional orienta criar uma classe com os atributos e tipos específicos para armazenar isto, crie uma classe Pessoa e depois poderá criar uma lista de Pessoa (List<Pessoa>). Até porque como vai colocar os dados das “pessoas” em uma lista?

  • A lista só pode ter um único tipo, assim como no exemplo que te passei usei String, mas e como saberá a que se refere cada valor? Antes de ArrayList, então deveria usar HashMap, que seria menos estranho.

2 curtidas