-
Notifications
You must be signed in to change notification settings - Fork 122
Expand file tree
/
Copy pathMain.java
More file actions
84 lines (64 loc) · 2.63 KB
/
Main.java
File metadata and controls
84 lines (64 loc) · 2.63 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
//import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collector;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> people = getPeople();
// Imperative approach ❌
/*
* List<Person> females = new ArrayList<>();
*
* for (Person person : people) {
*
* if (person.getGender().equals(Gender.FEMALE)) { females.add(person); } }
*
* females.forEach(System.out::println);
*/
// Declarative approach ✅
// Filter
List<Person> females = people.stream().filter(person -> person.getGender().equals(Gender.FEMALE))
.collect(Collectors.toList());
females.forEach(System.out::println);
// Sort
List<Person> sorted = people.stream().sorted(Comparator.comparing(Person::getAge)).collect(Collectors.toList());
// sorted.forEach(System.out::println);
// All match
boolean allMatch = people.stream().allMatch(person -> person.getAge() > 8);
System.out.println(allMatch);
// Any match
boolean anyMatch = people.stream().anyMatch(person -> person.getAge() > 8);
System.out.println(anyMatch);
// None match
boolean noneMatch = people.stream().noneMatch(person -> person.getName().equals("Fulanito"));
System.out.println(noneMatch);
// Max
// Optional<Person> max =
people.stream().max(Comparator.comparing(Person::getAge)).ifPresent(person -> {
System.out.println(person);
});
// System.out.println(max);
// Min
people.stream().min(Comparator.comparing(Person::getAge)).ifPresent(System.out::println);
// Group
Map<Gender, List<Person>> groupoByGender = people.stream().collect(Collectors.groupingBy(Person::getGender));
// System.out.println(groupoByGender);
groupoByGender.forEach((gender, people1) -> {
System.out.println(gender);
people1.forEach(System.out::println);
System.out.println();
});
Optional<String> mujerMasMAyor = people.stream().filter(person -> person.getGender().equals(Gender.FEMALE))
.max(Comparator.comparing(Person::getAge)).map(Person::getName);
mujerMasMAyor.ifPresent(System.out::println);
}
private static List<Person> getPeople() {
return List.of(new Person("Antonio", 20, Gender.MALE), new Person("Alina Smith", 33, Gender.FEMALE),
new Person("Helen White", 57, Gender.FEMALE), new Person("Alex Boz", 14, Gender.MALE),
new Person("Jamie Goa", 99, Gender.MALE), new Person("Anna Cook", 7, Gender.FEMALE),
new Person("Zelda Brown", 120, Gender.FEMALE));
}
}