Ir ao conteúdo

Posts recomendados

Postado

Boa Noite!

Criei uma classe de nome Engenheiro(String nome, String tipo, String projeto) com esse parâmetros, e depois na main criei sua lista.

E coloquei alguns engenheiros para teste, e gostaria de imprimir quantos tipos de engenheiro contém. por Exemplo o começo ficou assim:

public class Main {
    public static void main(String[] args) {
        ArrayList<Engenheiro> listaEng = new ArrayList<Engenheiro>();
        Engenheiro eng1 = new Engenheiro("Tipo 1", "Nome 1", "Projeto 1"); listaEng.add(eng1);
        Engenheiro eng2 = new Engenheiro("Tipo 1", "Nome 2", "Projeto 2"); listaEng.add(eng2);
        Engenheiro eng3 = new Engenheiro("Tipo 2", "Nome 3", "Projeto 1"); listaEng.add(eng3);
        Engenheiro eng4 = new Engenheiro("Tipo 2", "Nome 4", "Projeto 2"); listaEng.add(eng4);

 

Gostaria de imprimir no caso assim "Existem 2 tipos de Engenheiro tipo 1". Contendo o numero de cada tipo de engenheiro que tiver na arraylist.

Tentei utilizar o foreatch da seguinte maneira:

                   String tipo = null;
                    int num = 0;
                    for(Engenheiro Eng : listaEng){
                        if(Eng.getTipo().equals(Eng.getTipo())){
                            tipo = Eng.getTipo();
                            num++;
                        }
                    }
                    System.out.printf("Existem %d Engenheiros %s\n",num, tipo );

 

e tentei também pelo método de map, que encontrei um exemplo mas também não deu certo. Qual seria a maneira correta de fazer para que imprima

quantos tem de cada tipo de engenheiro?? Obrigado

  • Solução
Postado

Acredito que a melhor forma de fazer isso é utilizando um Map. Não será necessário nem ao menos utilizar o equals, pois a chave do Map será o tipo, e o valor será a quantidade. Com isso, no foreach, você apenas faz o calculo:

for (Engenheiro eng : listaEng){
	//verifica se existe a chave já no map, caso contrário inicializa com 0
	int total = 0;
	if (map.containsKey(eng.getType()){
		total = map.get(eng.getType());
	}
	//atualiza o valor dessa chave
	map.put(eng.getType(), total + 1);
}

Ai, para mostrar, basta você percorrer cada chave do Map e exibir o valor ...

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!