Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Retorno de Listas (List<> / ArrayList<>) no Java Android

Em uma das aulas, foi feita a parte do código do aplicativo de cadastrar alunos, e o método retornava a lista de alunos criada, porém o retorno era uma cópia da lista;

public List<Aluno> todos() {
        return new ArrayList<>(alunos);
}

Isso é uma boa prática? pois dependendo do tamanho da lista isso estaria consumindo muita memória.

2 respostas
solução!

Boa pergunta, na verdade você não está passando uma cópia e sim a referencia da lista. Experiementa fazer o seguinte: Crie duas classes distintas que modifica e retorna o mesmo objeto e verá que o objeto é modificado em ambos métodos. Se é "boa prática" isso é relátivo. No meu ponto de vista o código do Alex é ruim para leitura pois ele tira a sequencialidade do código, o fato é que ou você passa as funcionalidades para o processamento ou para memória. Ex: quando você faz muito if else você está atribuindo para a CPU fazer todo o seu código enquanto se você separa tudo por classe você aloca a lógica para a memoria ram do celular, ai é o que tem mais. No caso do celular você tem muita memória e um processador pequeno sobrecarregado enquanto antigamente você tinha pouca memoria tendo que fazer malabarimos com a ULA e o PCL do processador para executar código. Resumo da ópera, "boa prática" depende do hardware.

Marcelo obrigado, realmente funciona como referência e essa questão do uso de processador e memória ajuda a pensar qual a melhor forma de implementar algo novo para evitando gargalos.