Jump to content
LykyD

Preciso ajuda com ArrayList em Java

Recommended Posts

LykyD

Boas,

Como sou novo nestas andanças em java, gostaria que alguém me ajudasse.

Resumidamente, estou a trabalhar num programa em Java no eclipse, que consiste numa aplicação para um clube de futebol para monitorizar os seus jogadores e membros de staff. Estou a usar ArrayList para o clube que irá conter ArrayList dos escalões e que este por sua vez terá ArrayList de jogadores, dirigente, treinadores.

Consegui aceder através de código à informação dos Dirigentes, mas não os consigo visualizar a todos:

try 
   while(op3 >= 0 && op3 < 6){
		  Func2.limparEcra();
		  System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
		  System.out.println("*	 FutForm - ADMINISTRADOR - DIRIGENTE			   - O X   *");
		  System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
		  System.out.println("* - 1 - * Novo												  *");
		  System.out.println("* - 2 - * Editar											    *");
		  System.out.println("* - 3 - * Eliminar											  *");
		  System.out.println("* - 4 - * Listar											    *");
		  System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
		  System.out.println("* - 5 - * Voltar atrás										  *");
		  System.out.println("* - 0 - * Sair												  *");
		  System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
		  System.out.println("*											   versão v0.1	 *");
		  System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		  op3 = ler.nextInt();
		  ler.nextLine();

		  switch(op3){
		  case 1: Dirigente d = Func.adicionaDirigente();
					   Func2.atribuirDirigenteEscalao(equipa, d); break;
		  case 2: Func.editarDirigente(equipa.get(0).getEscalao().get(0).getEscalaoD()); break;
		  case 3: Func.eliminarDirigente(equipa.get(0).getEscalao().get(0).getEscalaoD()); break;
		  case 4: Func.listarDirigente(equipa); break;
		  case 5: Func2.guardar(equipa);
					   menuAdministrador(equipa); break;
		  case 0: Func2.guardar(equipa);
					   System.exit(0); break;
		  default: break;
		  }
   }
} catch (Exception erro) {
   System.out.println("ERRO! menuAdministradorDirigente");
   menuAdministrador(equipa);
}

O problema está no case 4 quando chamo a função para listar os dirigentes.

public static void listarDirigente(ArrayList<Equipa> equipa){

  @SuppressWarnings("resource")
  Scanner ler = new Scanner(System.in);

  int i = 0;
  Iterator<Dirigente> it = equipa.get(0).getEscalao().get(0).getEscalaoD().iterator();

   while(it.hasNext()){
		    Dirigente d = it.next();
		    System.out.println("* - " + i + " - * " + d);
		    i++;
   }

   ler.nextLine();

}

O problema está no Iterator, ele para chamar o Dirigente que é a ArrayList EscalaoD, uso o get(0), mas só me mostra o dirigente que estiver na primeira posição, o que eu gostava era arranjar uma maneira de ele me mostrar todos os dirigentes. Eu como tenho o código, consigo aceder aos dirigentes que estão no escalão do clube, mas só mostra o primeiro elemento.

Se alguém me conseguir ajudar, fico agradecido.

Obrigado.

Edited by LykyD

Share this post


Link to post
Share on other sites
HappyHippyHippo

é impossível responder a este tópico por não ser óbvia a dedução dos dados contidos na variável "equipa"


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LykyD

Estão aqui as 3 classes em uso para, qualquer dúvida em relação ao projeto, é só perguntar e fornecerei os dados que forem precisos.

Esta é a classe Equipa:

package classesSec;
import java.io.Serializable;
import java.util.ArrayList;
public class Equipa implements Serializable {

private static final long serialVersionUID = 1L;

private String nomeEquipa;
private ArrayList<Escalao> escalao = new ArrayList<Escalao>();
private ArrayList<Medico> medico = new ArrayList<Medico>();

public Equipa(){}

public Equipa(String nomeEquipa, Escalao escalao1, Medico medico1) {
 super();
 this.nomeEquipa = nomeEquipa;
 this.escalao.add(escalao1);
 this.medico.add(medico1);
}
public String getNomeEquipa() {
 return nomeEquipa;
}
public void setNomeEquipa(String nomeEquipa) {
 this.nomeEquipa = nomeEquipa;
}
public ArrayList<Escalao> getEscalao() {
 return escalao;
}
public void setEscalao(Escalao escalao) {
 this.escalao.add(escalao);
}

public ArrayList<Medico> getMedico() {
 return medico;
}
public void setMedico(Medico medico) {
 this.medico.add(medico);
}
@Override
public String toString() {
 return "Equipa [nomeEquipa=" + nomeEquipa + ", escalao=" + escalao
   + ", medico=" + medico + "]";
}

}

Esta é a classe Escalao:

package classesSec;
import java.io.Serializable;
import java.util.ArrayList;
public class Escalao implements Serializable {

private static final long serialVersionUID = 1L;
private String tipoEscalao;
private ArrayList<Jogador> escalaoJ = new ArrayList<Jogador>();
private ArrayList<Treinador> escalaoT = new ArrayList<Treinador>();
private ArrayList<Dirigente> escalaoD = new ArrayList<Dirigente>();
private ArrayList<Treino> escalaoTr = new ArrayList<Treino>();
private ArrayList<Jogo> escalaoJo = new ArrayList<Jogo>();

public Escalao(){}

public Escalao(String tipoEscalao, Jogador escalaoJ1,
  Treinador escalaoT1, Dirigente escalaoD1, Treino escalaoTr1,
  Jogo escalaoJo1) {
 super();
 this.tipoEscalao = tipoEscalao;
 this.escalaoJ.add(escalaoJ1);
 this.escalaoT.add(escalaoT1);
 this.escalaoD.add(escalaoD1);
 this.escalaoTr.add(escalaoTr1);
 this.escalaoJo.add(escalaoJo1);
}
public String getTipoEscalao() {
 return tipoEscalao;
}
public void setTipoEscalao(String tipoEscalao) {
 this.tipoEscalao = tipoEscalao;
}
public ArrayList<Jogador> getEscalaoJ() {
 return escalaoJ;
}
public void setEscalaoJ(Jogador escalaoJ) {
 this.escalaoJ.add(escalaoJ);
}
public ArrayList<Treinador> getEscalaoT() {
 return escalaoT;
}
public void setEscalaoT(Treinador escalaoT) {
 this.escalaoT.add(escalaoT);
}
public ArrayList<Dirigente> getEscalaoD() {
 return escalaoD;
}
public void setEscalaoD(Dirigente escalaoD) {
 this.escalaoD.add(escalaoD);
}
public ArrayList<Treino> getEscalaoTr() {
 return escalaoTr;
}
public void setEscalaoTr(Treino escalaoTr) {
 this.escalaoTr.add(escalaoTr);
}
public ArrayList<Jogo> getEscalaoJo() {
 return escalaoJo;
}
public void setEscalaoJo(Jogo escalaoJo) {
 this.escalaoJo.add(escalaoJo);
}
@Override
public String toString() {
 return "Escalao [tipoEscalao=" + tipoEscalao + ", escalaoJ=" + escalaoJ
   + ", escalaoT=" + escalaoT + ", escalaoD=" + escalaoD
   + ", escalaoTr=" + escalaoTr + ", escalaoJo=" + escalaoJo + "]";
}

}

E esta é a classe Dirigente:

package classesSec;
import java.io.Serializable;
public class Dirigente implements Serializable {

private static final long serialVersionUID = 1L;

private String user, pass;
private String nomeDirigente;
private int idade;
private int numTele;
private String nacionalidade;

public Dirigente(){}

public Dirigente(String user, String pass, String nomeDirigente, int idade, int numTele,
  String nacionalidade) {
 super();
 this.user = user;
 this.pass = pass;
 this.nomeDirigente = nomeDirigente;
 this.idade = idade;
 this.numTele = numTele;
 this.nacionalidade = nacionalidade;
}
public String getUser() {
 return user;
}
public void setUser(String user) {
 this.user = user;
}
public String getPass() {
 return pass;
}
public void setPass(String pass) {
 this.pass = pass;
}
public String getNomeDirigente() {
 return nomeDirigente;
}
public void setNomeDirigente(String nomeDirigente) {
 this.nomeDirigente = nomeDirigente;
}
public int getIdade() {
 return idade;
}
public void setIdade(int idade) {
 this.idade = idade;
}
public int getNumTele() {
 return numTele;
}
public void setNumTele(int numTele) {
 this.numTele = numTele;
}
public String getNacionalidade() {
 return nacionalidade;
}
public void setNacionalidade(String nacionalidade) {
 this.nacionalidade = nacionalidade;
}
@Override
public String toString() {
 return "Dirigente [user=" + user + ", pass=" + pass
   + ", nomeDirigente=" + nomeDirigente + ", idade=" + idade
   + ", numTele=" + numTele + ", nacionalidade=" + nacionalidade
   + "]";
}

}

Share this post


Link to post
Share on other sites
HappyHippyHippo

ele para chamar o Dirigente que é a ArrayList EscalaoD, uso o get(0), mas só me mostra o dirigente que estiver na primeira posição

primeiro de tudo, Dirigente é uma classe e não "ArrayList EscalaoD"

segundo, o código que foi apresentado apresenta a lista de valores dirigentes associados ao primeiro escalão da primeira lista (primeiro dado pelo valor 0 do método zero).

logo, o que se pode dizer é que o código está correcto.

o que vejo aqui é que não explicaste correctamente o que pretendes


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LykyD

ele realmente mostra o dirigente que está no escalão da posição 0, o objetivo era mostrar todos os dirigentes de todos os escalões.

por exemplo, se tivermos dois escalões, Escolinhas e Iniciados e se adicionar os dirigentes João e Luis ao escalão Escolinhas e adicionar o dirigente André ao escalão Iniciados. A minha função listarDirigente, da maneira como está, só apresenta os dirigentes João e Luis, porque estão no escalão associados à posição 0. o que pretendia era conseguir listar todos os dirigentes, independentemente do escalão.

Iterator<Dirigente> it = equipa.get(0).getEscalao().get(0).getEscalaoD().iterator();

O primeiro get(0) está bem, porque só vai existir uma equipa, o segundo get(0) é que não consigo alterar para listar todos os dirigentes

Obrigado pela ajuda

Edited by LykyD

Share this post


Link to post
Share on other sites
HappyHippyHippo

se só existe uma equipa, qual é a razão de ser uma lista ?

no que toca a listar todos os dirigentes de todos os escalões, basta fazer o mesmo processo:

- um iterador para os escalões

- um iterador para os dirigentes (obtido da dereferenciação do iterador do escalão)

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LykyD

Sim, na parte da equipa estar como lista, vou ter que alterar isso.

Então, terei que efetuar um iterador para os escalões, e outro para os dirigentes consoante a informação obtida do primeiro iterador.

Obrigado pela ajuda, vou então tentar aplicar a sua dica.

Share this post


Link to post
Share on other sites
LykyD

Já agora, não querendo abusar muito, mas como faço isso da dereferenciação do iterador? lol

Share this post


Link to post
Share on other sites
HappyHippyHippo

<tipo> <nome_variavel> = <variavel_iterador>->next();
[/Code]

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LykyD

Tentei fazer algo mas não estou a conseguir, está a dar-me erro no it->next()

Modifiquei os iteradores. Era algo do género que tinha em mente para fazer?

public static void listarDirigente(ArrayList<Equipa> equipa){

@SuppressWarnings("resource")
Scanner ler = new Scanner(System.in);

int i = 0, j = 0;

Iterator<Escalao> it = equipa.get(0).getEscalao().iterator();
Iterator<Dirigente> it2 = it->next();

//Iterator<Dirigente> it = equipa.get(0).getEscalao().get(j).getEscalaoD().iterator();

while(it2.hasNext()){
Dirigente d = it2.next();
System.out.println("* - " + i + " - * " + d);
i++;
}


ler.nextLine();

}

Edited by LykyD

Share this post


Link to post
Share on other sites
HappyHippyHippo

dizer que dá erro não é suficiente.

apresenta a mensagem de erro que te é apresentada (toda de preferência)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LykyD

A mensagem que dá é : "the target type of this expression must be a functional interface"

it->next() está a vermelho

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.