Skip to content

Commit 6d42ac2

Browse files
committed
Using criteria with and before lambda
1 parent 0ec0a44 commit 6d42ac2

2 files changed

Lines changed: 150 additions & 94 deletions

File tree

‎java8-tutorials/lambda-essentials/src/main/java/org/ecabrerar/examples/lambda/essentials/java8/tutotial/LambdaExpressions.java‎

Lines changed: 74 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -17,130 +17,110 @@
1717
*/
1818
public class LambdaExpressions {
1919

20-
public static void printPersonsOlderThan(List<Person> roster, int age) {
20+
21+
private void printPersonsWithPredicate(List<Person> roster, Predicate<Person> tester) {
2122

2223
for (Person p : roster) {
23-
if (p.getAge() >= age) {
24+
if (tester.test(p)) {
2425
p.printPerson();
2526
}
26-
2727
}
2828
}
2929

30-
public static void printPersonsWithinAgeRange(List<Person> roster, int low, int high) {
30+
private void processPersons(List<Person> roster, Predicate<Person> tester, Consumer<Person> block) {
3131
for (Person p : roster) {
32-
if (low <= p.getAge() && p.getAge() < high) {
33-
p.printPerson();
32+
if (tester.test(p)) {
33+
block.accept(p);
3434
}
3535
}
3636
}
3737

38-
public static void printPersons(List<Person> roster, CheckPerson tester) {
39-
38+
private void processPersonsWithFunction(List<Person> roster, Predicate<Person> tester, Function<Person, String> mapper, Consumer<String> block) {
4039
for (Person p : roster) {
41-
if(tester.test(p)){
42-
p.printPerson();
43-
}
44-
}
45-
}
46-
47-
public static void printPersonsWithPredicate(List<Person> roster, Predicate<Person> tester){
48-
49-
for (Person p : roster) {
50-
if(tester.test(p)){
51-
p.printPerson();
52-
}
53-
}
54-
}
55-
56-
public static void processPersons(List<Person> roster, Predicate<Person> tester, Consumer<Person> block){
57-
for (Person p : roster) {
58-
if(tester.test(p)){
59-
block.accept(p);
60-
}
61-
}
62-
}
63-
64-
public static void processPersonsWithFunction(List<Person> roster, Predicate<Person> tester,Function<Person, String> mapper, Consumer<String> block){
65-
for (Person p : roster) {
66-
if(tester.test(p)){
40+
if (tester.test(p)) {
6741
String data = mapper.apply(p);
6842
block.accept(data);
69-
}
43+
}
7044
}
7145
}
72-
73-
public static <X, Y> void processElements(Iterable<X> source,
74-
Predicate<X> tester,
75-
Function<X, Y> mapper,
76-
Consumer<Y> block){
77-
46+
47+
private <X, Y> void processElements(Iterable<X> source,
48+
Predicate<X> tester,
49+
Function<X, Y> mapper,
50+
Consumer<Y> block) {
51+
7852
for (X p : source) {
79-
if(tester.test(p)){
53+
if (tester.test(p)) {
8054
Y data = mapper.apply(p);
8155
block.accept(data);
82-
}
56+
}
8357
}
84-
58+
8559
}
86-
87-
public static void main(String[] args) {
88-
printPersons(new ArrayList<>(), new CheckPersonEligibleForSelectiveService());
89-
90-
printPersons(new ArrayList<>(), new CheckPerson() {
9160

92-
@Override
93-
public boolean test(Person p) {
94-
return p.getGender() == Person.Sex.MALE
95-
&& p.getAge() >= 18
96-
&& p.getAge() <= 25;
97-
}
98-
});
99-
100-
printPersons(new ArrayList<>(),
101-
(Person p) -> p.getGender() == Person.Sex.MALE
102-
&& p.getAge() >= 18
103-
&& p.getAge() <= 25);
104-
105-
106-
printPersonsWithPredicate(new ArrayList<>(),
107-
p->p.getGender()==Person.Sex.MALE
61+
private void processElementsWithAggregateOperationsAndLambdaExpressions(List<Person> roster) {
62+
63+
roster
64+
.stream()
65+
.filter(p -> p.getGender() == Person.Sex.MALE
66+
&& p.getAge() >= 18
67+
&& p.getAge() <= 25)
68+
.map(p -> p.getEmailAddress())
69+
.forEach(email -> System.out.println(email));
70+
71+
}
72+
73+
public void runExamples() {
74+
75+
System.out.println("JDK 8 Lambdas Essentials");
76+
77+
78+
System.out.println("printPersonsWithPredicate");
79+
80+
System.out.println("printPersonsWithinAgeRange");
81+
printPersonsWithPredicate(new ArrayList<>(),
82+
p -> p.getGender() == Person.Sex.MALE
10883
&& p.getAge() >= 18
10984
&& p.getAge() <= 25
11085
);
111-
86+
87+
88+
11289
processPersons(new ArrayList<>(),
113-
p->p.getGender()==Person.Sex.MALE
90+
p -> p.getGender() == Person.Sex.MALE
11491
&& p.getAge() >= 18
115-
&& p.getAge() <= 25,
116-
p->p.printPerson());
117-
118-
119-
processPersonsWithFunction(new ArrayList<>(),
120-
p->p.getGender()==Person.Sex.MALE
92+
&& p.getAge() <= 25,
93+
p -> p.printPerson());
94+
95+
System.out.println("processPersonsWithFunction");
96+
97+
processPersonsWithFunction(new ArrayList<>(),
98+
p -> p.getGender() == Person.Sex.MALE
12199
&& p.getAge() >= 18
122100
&& p.getAge() <= 25,
123-
p->p.getEmailAddress(),
124-
email->System.out.println(email)
125-
);
126-
127-
processElements(new ArrayList<Person>(),
128-
p->p.getGender()==Person.Sex.MALE
101+
p -> p.getEmailAddress(),
102+
email -> System.out.println(email)
103+
);
104+
105+
System.out.println("processElements");
106+
107+
processElements(new ArrayList<Person>(),
108+
p -> p.getGender() == Person.Sex.MALE
129109
&& p.getAge() >= 18
130110
&& p.getAge() <= 25,
131-
p->p.getEmailAddress(),
132-
email->System.out.println(email)
133-
);
134-
135-
List<Person> roster = new ArrayList<>();
136-
137-
138-
roster
139-
.stream()
140-
.filter(p->p.getGender()==Person.Sex.MALE
141-
&& p.getAge() >= 18
142-
&& p.getAge() <= 25)
143-
.map(p->p.getEmailAddress())
144-
.forEach(email->System.out.println(email));
145-
}
111+
p -> p.getEmailAddress(),
112+
email -> System.out.println(email)
113+
);
114+
115+
System.out.println("processElements with Aggregate Operations That Accept Lambda Expressions as Parameters");
116+
117+
processElementsWithAggregateOperationsAndLambdaExpressions(new ArrayList<>());
118+
119+
}
120+
121+
public static void main(String[] args) {
122+
123+
LambdaExpressions lambda = new LambdaExpressions();
124+
lambda.runExamples();
125+
}
146126
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
* To change this license header, choose License Headers in Project Properties.
3+
* To change this template file, choose Tools | Templates
4+
* and open the template in the editor.
5+
*/
6+
package org.ecabrerar.examples.lambda.essentials.java8.tutotial;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
/**
12+
*
13+
* @author ecabrerar
14+
*/
15+
public class SearchCriteriaJava7 {
16+
17+
private void printPersonsOlderThan(List<Person> roster, int age) {
18+
19+
for (Person p : roster) {
20+
if (p.getAge() >= age) {
21+
p.printPerson();
22+
}
23+
24+
}
25+
}
26+
27+
private void printPersonsWithinAgeRange(List<Person> roster, int low, int high) {
28+
for (Person p : roster) {
29+
if (low <= p.getAge() && p.getAge() < high) {
30+
p.printPerson();
31+
}
32+
}
33+
}
34+
35+
private void printPersons(List<Person> roster, CheckPerson tester) {
36+
37+
for (Person p : roster) {
38+
if (tester.test(p)) {
39+
p.printPerson();
40+
}
41+
}
42+
}
43+
44+
public void runExamples(){
45+
46+
System.out.println("Search Criteria in Local Class in Java 7");
47+
48+
System.out.println("printPersons");
49+
50+
printPersons(new ArrayList<>(), new CheckPersonEligibleForSelectiveService());
51+
52+
printPersons(new ArrayList<>(), new CheckPerson() {
53+
54+
@Override
55+
public boolean test(Person p) {
56+
return p.getGender() == Person.Sex.MALE
57+
&& p.getAge() >= 18
58+
&& p.getAge() <= 25;
59+
}
60+
});
61+
62+
System.out.println("printPersonsWithinAgeRange");
63+
64+
printPersons(new ArrayList<>(),
65+
(Person p) -> p.getGender() == Person.Sex.MALE
66+
&& p.getAge() >= 18
67+
&& p.getAge() <= 25);
68+
69+
}
70+
71+
public static void main(String[] args) {
72+
SearchCriteriaJava7 searchCriteria = new SearchCriteriaJava7();
73+
searchCriteria.runExamples();
74+
}
75+
76+
}

0 commit comments

Comments
 (0)