-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.java
More file actions
89 lines (75 loc) · 4.78 KB
/
Copy pathmain.java
File metadata and controls
89 lines (75 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.time.LocalDate;
import java.time.Month;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
public class Principal {
public static void main(String[] args) {
List<Funcionario> funcionarios = new ArrayList<>();
// 3.1 – Inserir todos os funcionários
funcionarios.add(new Funcionario("Maria", LocalDate.of(2000, 10, 18), new BigDecimal("2009.44"), "Operador"));
funcionarios.add(new Funcionario("João", LocalDate.of(1990, 5, 12), new BigDecimal("2284.38"), "Operador"));
funcionarios.add(new Funcionario("Caio", LocalDate.of(1961, 5, 2), new BigDecimal("9836.14"), "Coordenador"));
funcionarios.add(new Funcionario("Miguel", LocalDate.of(1988, 10, 14), new BigDecimal("19119.88"), "Diretor"));
funcionarios.add(new Funcionario("Alice", LocalDate.of(1995, 1, 5), new BigDecimal("2234.58"), "Recepcionista"));
funcionarios.add(new Funcionario("Heitor", LocalDate.of(1999, 11, 19), new BigDecimal("1582.72"), "Operador"));
funcionarios.add(new Funcionario("Arthur", LocalDate.of(1993, 3, 31), new BigDecimal("4071.84"), "Contador"));
funcionarios.add(new Funcionario("Laura", LocalDate.of(1994, 7, 8), new BigDecimal("3017.45"), "Gerente"));
funcionarios.add(new Funcionario("Heloísa", LocalDate.of(2003, 5, 24), new BigDecimal("1606.85"), "Eletricista"));
funcionarios.add(new Funcionario("Helena", LocalDate.of(1996, 9, 2), new BigDecimal("2799.93"), "Gerente"));
// 3.2 – Remover o funcionário “João”
funcionarios.removeIf(f -> f.getNome().equals("João"));
// Formatadores
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
// 3.3 – Imprimir todos os funcionários
System.out.println("--- Lista de Funcionários ---");
imprimirLista(funcionarios, dtf, nf);
// 3.4 – Aumento de 10%
funcionarios.forEach(f -> f.setSalario(f.getSalario().multiply(new BigDecimal("1.10"))));
// 3.5 e 3.6 – Agrupar por função e imprimir
System.out.println("\n--- Funcionários Agrupados por Função ---");
Map<String, List<Funcionario>> agrupados = funcionarios.stream()
.collect(Collectors.groupingBy(Funcionario::getFuncao));
agrupados.forEach((funcao, lista) -> {
System.out.println("Função: " + funcao);
lista.forEach(f -> System.out.println(" - " + f.getNome()));
});
// 3.8 – Aniversariantes meses 10 e 12
System.out.println("\n--- Aniversariantes de Outubro e Dezembro ---");
funcionarios.stream()
.filter(f -> f.getDataNascimento().getMonthValue() == 10 || f.getDataNascimento().getMonthValue() == 12)
.forEach(f -> System.out.println(f.getNome() + ": " + f.getDataNascimento().format(dtf)));
// 3.9 – Maior idade
System.out.println("\n--- Funcionário com Maior Idade ---");
Funcionario maisVelho = Collections.min(funcionarios, Comparator.comparing(Pessoa::getDataNascimento));
int idade = LocalDate.now().getYear() - maisVelho.getDataNascimento().getYear();
System.out.println("Nome: " + maisVelho.getNome() + ", Idade: " + idade);
// 3.10 – Ordem alfabética
System.out.println("\n--- Lista em Ordem Alfabética ---");
List<Funcionario> ordemAlfabetica = new ArrayList<>(funcionarios);
ordemAlfabetica.sort(Comparator.comparing(Pessoa::getNome));
ordemAlfabetica.forEach(f -> System.out.println(f.getNome()));
// 3.11 – Total dos salários
BigDecimal totalSalarios = funcionarios.stream()
.map(Funcionario::getSalario)
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("\nTotal dos salários: " + nf.format(totalSalarios));
// 3.12 – Salários mínimos (Considerando R$ 1212.00)
BigDecimal salarioMinimo = new BigDecimal("1212.00");
System.out.println("\n--- Salários Mínimos por Funcionário ---");
funcionarios.forEach(f -> {
BigDecimal qtdMinimos = f.getSalario().divide(salarioMinimo, 2, RoundingMode.HALF_UP);
System.out.println(f.getNome() + " ganha " + qtdMinimos + " salários mínimos.");
});
}
private static void imprimirLista(List<Funcionario> lista, DateTimeFormatter dtf, NumberFormat nf) {
lista.forEach(f -> {
System.out.println(String.format("Nome: %s | Data Nasc: %s | Salário: %s | Função: %s",
f.getNome(), f.getDataNascimento().format(dtf), nf.format(f.getSalario()), f.getFuncao()));
});
}
}