Conteúdo:

Java Streams API


Crie a classe Jogador com os atributos: nome, posição, idade, time, golsMarcados

Você pode utilizar os dados dos arrays a seguir ou criar seus próprios dados para gerar jogadores aleatórios (os dados dos jogadores não corresponderão à realidade, mas servem para nosso exemplo).

String[] posicoes = {"Goleiro", "Defensor", "Meio-Campista", "Atacante"};
String[] times = {"Flamengo", "São Paulo", "Palmeiras", "Santos", "Corinthians", "Grêmio", "Internacional", "Fluminense", "Atlético Mineiro", "Cruzeiro"};
String[] nomes = {
	"Neymar", "Gabriel Barbosa", "Alisson", "Marquinhos", "Casemiro",
	"Roberto Firmino", "Thiago Silva", "Richarlison", "Lucas Paquetá", "Éder Militão",
	"Vinícius Júnior", "Fabinho", "Douglas Luiz", "Everton Ribeiro", "Ederson",
	"Gabriel Jesus", "Danilo", "Rodrygo", "Fred", "Reinier"
};

Use o código a seguir como base para resolver o exercício:

Crie uma lista com 20 jogadores com dados (nome, posição, idade, time, golsMarcados) aleatórios.

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

class Jogador {
    private String nome;
    private String posicao;
    private int idade;
    private String time;
    private int golsMarcados;

    public Jogador(String nome, String posicao, int idade, String time, int golsMarcados) {
        this.nome = nome;
        this.posicao = posicao;
        this.idade = idade;
        this.time = time;
        this.golsMarcados = golsMarcados;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPosicao() {
        return posicao;
    }

    public void setPosicao(String posicao) {
        this.posicao = posicao;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public int getGolsMarcados() {
        return golsMarcados;
    }

    public void setGolsMarcados(int golsMarcados) {
        this.golsMarcados = golsMarcados;
    }

    @Override
    public String toString() {
        return "Jogador{" +
                "nome='" + nome + '\\'' +
                ", posicao='" + posicao + '\\'' +
                ", idade=" + idade +
                ", time='" + time + '\\'' +
                ", golsMarcados=" + golsMarcados +
                '}';
    }
}

public class Exercicio {
    public static void main(String[] args) {
        String[] posicoes = {"Goleiro", "Defensor", "Meio-Campista", "Atacante"};
        String[] times = {"Flamengo", "São Paulo", "Palmeiras", "Santos", "Corinthians", "Grêmio", "Internacional", "Fluminense", "Atlético Mineiro", "Cruzeiro"};
        String[] nomes = {
                "Neymar", "Gabriel Barbosa", "Alisson", "Marquinhos", "Casemiro",
                "Roberto Firmino", "Thiago Silva", "Richarlison", "Lucas Paquetá", "Éder Militão",
                "Vinícius Júnior", "Fabinho", "Douglas Luiz", "Everton Ribeiro", "Ederson",
                "Gabriel Jesus", "Danilo", "Rodrygo", "Fred", "Reinier"
        };

        List<Jogador> jogadores = new ArrayList<>();

        for (int i = 0; i < 20; i++) {
            Random r = new Random();
            String posicao = posicoes[r.nextInt(posicoes.length)];
            String time = times[r.nextInt(times.length)];
            String nome = nomes[r.nextInt(nomes.length)];
            int idade = r.nextInt(18, 40);
            int gols = r.nextInt(0, 10);
            jogadores.add(
                    new Jogador(nome, posicao, idade, time, gols));
        }

//        imprimeTodos(jogadores);
        filtraPorTime(jogadores, "Flamengo");
    }

    public static void imprimeTodos(List<Jogador> jogadores) {
        jogadores.stream().forEach(System.out::println);
    }

    public static void filtraPorTime(List<Jogador> jogadores, String time) {
        jogadores.stream()
                .filter(j -> j.getTime().equals(time))
                .forEach(System.out::println);
    }
}

Usando streams, implemente as funções para:

  1. imprimir todos os jogadores
  2. imprimir jogadores de um determinado time
  3. imprimir jogadores de um determinado time que tenham mais que um determinado número de gols marcados
  4. imprimir todos os jogadores, agrupando-os por time
  5. calcular média de idade dos jogadores
  6. calcular média de idade dos jogadores de um time
  7. imprimir jogador mais velho
  8. imprimir jogador mais novo
  9. imprimir jogador artilheiro
  10. imprimir somatório de gols de todos os jogadores de um determinado time