Java - Tenho as seguintes classes e preciso instanciar o método "listar" na classe "Faturamento" usando Collections para que no final gere o resultado conforme inseri no final do post:

import java.util.ArrayList;
import java.util.List;

public class Repositorio {
// essa classe não deve ser alterada

public List<String> todosAtendimentos() {
	List<String> atendimentos = new ArrayList<String>();
	atendimentos.add("Totó");
	atendimentos.add("Mel");
	atendimentos.add("Garfield");
	atendimentos.add("Rex");
	atendimentos.add("Totó");
	atendimentos.add("Rex");
	atendimentos.add("Bolt");
	atendimentos.add("Nina");
	atendimentos.add("Capachão");
	atendimentos.add("Fifi");
	atendimentos.add("Fifi");
	atendimentos.add("Rex");
	atendimentos.add("Paçoca");
	atendimentos.add("Pipoca");
	atendimentos.add("Amora");
	atendimentos.add("Kiara");
	atendimentos.add("Kiara");
	atendimentos.add("Meg");
	atendimentos.add("Bolt");
	atendimentos.add("Gigi");
	atendimentos.add("Bolt");
	atendimentos.add("Pipoca");
	atendimentos.add("Scooby");
	atendimentos.add("Bolt");
	atendimentos.add("Bolt");
	atendimentos.add("Mafalda");
	atendimentos.add("Capachão");
	atendimentos.add("Marley");
	atendimentos.add("Scooby");
	atendimentos.add("Lua");
	atendimentos.add("Bolt");
	return atendimentos;
}

public double getPrecoConsulta() {
	return 79.43;
}

}

import java.util.List;

public class Principal {
// Atenção: essa classe não deve ser alterada

public static void main(String[] args) {
	// carregar lista de atendimentos do repositório
	Repositorio repositorio = new Repositorio();
	List<String> atendimentos = repositorio.todosAtendimentos();
	double precoConsulta = repositorio.getPrecoConsulta();
	
	// listar os atendimentos feitos só para fins de validação
	System.out.println("Atendimentos realizados: \n" + atendimentos + "\n");
	
	// processar o faturamento
	// TODO a classe Faturamento com o construtor e os métodos processar() 
	//       e listar() precisam ser implementadas por vocês 
	Faturamento faturamento = new Faturamento(atendimentos, precoConsulta);
	faturamento.processar();
	faturamento.listar();
}

}

import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

public class Faturamento {

Repositorio repositorio = new Repositorio();

public Faturamento(List<String> atendimentos, double precoConsulta) {
}

public void processar() {
       	int size = repositorio.todosAtendimentos().size();
        System.out.println(size + " fatura(s) processada(s) pelo sistema.");
    }

public void listar() {
 }

}

// resultado que preciso gerar mas não estou conseguindo:

Atendimentos realizados:
[Totó, Mel, Garfield, Rex, Totó, Rex, Bolt, Nina, Capachão, Fifi, Fifi, Rex, Paçoca, Pipoca, Amora, Kiara, Kiara, Meg, Bolt, Gigi, Bolt, Pipoca, Scooby, Bolt, Bolt, Mafalda, Capachão, Marley, Scooby, Lua, Bolt]

18 fatura(s) processada(s) pelo sistema:

  • Animal: Amora com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Bolt com 6 atendimento(s) no valor de R$ 476.58
  • Animal: Capachão com 2 atendimento(s) no valor de R$ 158.86
  • Animal: Fifi com 2 atendimento(s) no valor de R$ 158.86
  • Animal: Garfield com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Gigi com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Kiara com 2 atendimento(s) no valor de R$ 158.86
  • Animal: Lua com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Mafalda com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Marley com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Meg com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Mel com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Nina com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Paçoca com 1 atendimento(s) no valor de R$ 79.43
  • Animal: Pipoca com 2 atendimento(s) no valor de R$ 158.86
  • Animal: Rex com 3 atendimento(s) no valor de R$ 238.29
  • Animal: Scooby com 2 atendimento(s) no valor de R$ 158.86
  • Animal: Totó com 2 atendimento(s) no valor de R$ 158.86

// ainda sou novo em java, se puderem incluir exemplos me ajuda melhor na aprendizagem, valeu!

Teve um cara que fez esse exercício recentemente aqui no GUJ, da uma olhada no código dele e tenta entender, não só copiar, qualquer dúvida só comenter aqui que tento tirar.

Ah, e poderia me dizer da onde é esse exercício? Já é o terceira vez que vejo ele por aqui.

1 curtida

Opa, pesquisei e não encontrei, por isso postei kkkk, você pode me enviar o link, por favor, caso encontre?

Cara, esse exercício é da faculdade, não sei se os outros também eram, mas bem provável…

Já vi que anexou o link aí no comentário, valeu, vou dar uma olhada!

import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class Faturamento {

Repositorio repositorio = new Repositorio();

public Faturamento(List<String> atendimentos, double precoConsulta) {
	
}

public void processar() {
       	int size = repositorio.todosAtendimentos().size();
        System.out.println(size + " fatura(s) processada(s) pelo sistema.");
}

public void listar() {
	
	List<String> listaAtendimentos = repositorio.todosAtendimentos();
	
	Collections.sort(listaAtendimentos);
	
	Set<String> set = new LinkedHashSet<>();
	set.addAll(listaAtendimentos);
	
	for (String nomeAnimal : set ) {
        
        int qtdAtendimento = Collections.frequency(repositorio.todosAtendimentos(), nomeAnimal);
       
		double precoAtendimento = qtdAtendimento * repositorio.getPrecoConsulta();
			
			System.out.println("- Animal: " + nomeAnimal + " com " + qtdAtendimento +
    				" atendimento(s) com valor total de R$ " + precoAtendimento);

	}
	
}

}