Dúvida referente ArrayList

Por favor, sou um iniciante em programação e estou com dúvida da lógica pra utilizar um array list.

Se eu tenho por exemplo duas classes que criar seus respectivos objetos:

Funcionario{
int idade = 0;
double salario = 1000/
salarioLiquido();
}

Patrao{
int idade = 0;
double salario = 1000/
salarioLiquido();
}

e eu crio um laço com while pra cadastrar objetos:

String opcao = “sim”;
while(opcao == “sim”){
func = new Funcionario;
pat = new Patrao;
opcao = jOptionPanel(“deseja continuar? sim/não”);
}

Como que faço pra adicionar esses objetos criados em um ArrayList pra depois imprimir eles com o For?

Use o método add() da classe ArrayList. Link: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(E)

Estude: https://www.caelum.com.br/apostila-java-orientacao-objetos/collections-framework/#16-2-listas-java-util-list

Abraço.

Eu não to conseguindo entender bem pela apostila, o fato de eu só conseguir teste de noite me atrapalha também, mas é a condição que tenho pra estudar no momento, por exemplo, seria essa a lógica?

ArrayList armazenar = new ArrayList();
String opcao = “sim”;

while(opcao == “sim”){
func = new Funcionario;

armazenar.add(Funcionario);
pat = new Patrao;
armazenar.add(Patrao);
opcao = jOptionPanel(“deseja continuar? sim/não”);
}

For(i = 0, i < armazenar.size, i++){
System.out.println(armazena(i));
}

Basicamente, seria isso sim. Mas atente-se ao seguinte:

  • seu ArrayList precisa de um tipo. Quando declarar, faça algo como List< Funcionario > armazenar = new ArrayList<>();
  • só que, quando você fizer isso, não poderá armazenar objetos do tipo Patrao;
  • o ideal, caso queira usar o mesmo ArrayList para ambos, é fazer ambas as classes terem uma classe base em comum (como Pessoa);
  • ou seja, você cria uma classe Pessoa (com os atributos em comum, como idade e salario), daí as classes Funcionario e Patrao herdam de Pessoa (“class Funcionario extends Pessoa” e “class Patrao extends Pessoa”);
  • o método add precisa receber um objeto. Você fez armazenar.add(Funcionario) quando deveria ter feito armazenar.add(func). Mesma coisa pro Patrao: faça armazenar.add(pat);
  • seu você precisa sobrescrever o método toString das classes Patrao e Funcionario (ou mesmo da classe Pessoa) para que o System.out.println(armazena(i)); imprima os dados ao invés do endereço de memória do objeto.

Leia os links que eu postei.

Abraço.

1 curtida

Ja me ajudou muito, daqui vou tentar praticar um pouco e de noite digo se consegui na prática.