Dúvida referente ArrayList

4 respostas
javaarray
H

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?

4 Respostas

TerraSkilll

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.

H

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));

}
TerraSkilll

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.

H

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

Criado 7 de novembro de 2017
Ultima resposta 7 de nov. de 2017
Respostas 4
Participantes 2