Skip to content

Commit 5025708

Browse files
committed
15/08/2018 at 14:24
1 parent 204e88b commit 5025708

File tree

4 files changed

+155
-34
lines changed

4 files changed

+155
-34
lines changed

in28Munites-JavaCourse-ForBeginners/src/com/in28munites/FunctionalProgramming/FPNumberRunner.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.util.Arrays;
44
import java.util.List;
5-
import java.util.stream.Collectors;
65
import java.util.stream.IntStream;
76

87
public class FPNumberRunner {
@@ -26,11 +25,6 @@ public static void main(String[] args) {
2625
numbers.stream()
2726
.forEach( element ->System.out.println(element));*/
2827

29-
System.out.println("Max : " + fpMaxListInt(numbers));
30-
System.out.println("Min : " + fpMinListInt(numbers));
31-
32-
System.out.println(fpOdd(numbers));
33-
3428
//int sum = normalSum(numbers);
3529
//int sum = fpSum(numbers);
3630
int sum = fpSumOdd(numbers);
@@ -60,20 +54,6 @@ private static void fpLength() {
6054
// .map(s -> s.length())
6155
// .forEach(p -> System.out.println(p.length()));
6256
}
63-
64-
private static int fpMaxListInt(List<Integer> numbers) {
65-
return numbers.stream().max((n1, n2) -> Integer.compare(n1, n2)).get();
66-
}
67-
68-
private static int fpMinListInt(List<Integer> numbers) {
69-
return numbers.stream().min((n1, n2) -> Integer.compare(n1, n2)).get();
70-
}
71-
72-
private static List<Integer> fpOdd(List<Integer> numbers) {
73-
return numbers.stream()
74-
.filter(number -> number % 2 == 1)
75-
.collect(Collectors.toList());
76-
}
7757

7858
private static int normalSum(List<Integer> numbers) {
7959
int sum = 0;
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.in28munites.FunctionalProgramming;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.Optional;
6+
import java.util.stream.Collectors;
7+
import java.util.stream.IntStream;
8+
9+
public class FPNumberRunner2 {
10+
11+
public static void main(String[] args) {
12+
List<Integer> numbers = Arrays.asList(4,6,8,13,3,15);
13+
List<Integer> numbers2 = Arrays.asList(13,3,15);
14+
15+
//Exercise - Print squares of first 10 numbers!
16+
//Clue - IntStream.range(1,10)
17+
fpSquare();
18+
19+
//Arrays.asList("Apple", "Ant", "Bat").stream()
20+
//Map all of these to lowercase and print them
21+
fpLowerCase();
22+
23+
//List.of("Apple", "Ant", "Bat").stream()
24+
//Print the length of each element
25+
fpLength();
26+
27+
/*
28+
numbers.stream()
29+
.forEach( element ->System.out.println(element));*/
30+
31+
System.out.println("Max : " + fpMaxListInt(numbers));
32+
System.out.println("Min : " + fpMinListInt(numbers));
33+
34+
System.out.println(fpOdd(numbers));
35+
System.out.println(fpEven(numbers));
36+
37+
System.out.println(fpSquare2());
38+
39+
//int sum = normalSum(numbers);
40+
//int sum = fpSum(numbers);
41+
int sum = fpSumOdd(numbers);
42+
//int sum = fpSumOdd2(numbers);
43+
44+
System.out.println(sum);
45+
46+
System.out.println(fpOptinalMaxListInt(numbers));
47+
System.out.println(fpOptinalMaxListInt(numbers).get());
48+
System.out.println(fpOptinalMaxListInt(numbers).isPresent());
49+
System.out.println(fpOptinalMaxListInt(numbers2));
50+
System.out.println(fpOptinalMaxListInt(numbers2).isPresent());
51+
System.out.println(fpOptinalMaxListInt(numbers2).orElse(0));
52+
53+
}
54+
55+
private static void fpSquare() {
56+
IntStream.range(1, 10)
57+
.map(e -> e * e)
58+
.forEach(p -> System.out.println(p));
59+
}
60+
61+
private static void fpLowerCase() {
62+
Arrays.asList("Apple", "Ant", "Bat").stream()
63+
.map(s -> s.toLowerCase())
64+
.forEach(p -> System.out.println(p));
65+
}
66+
67+
private static void fpLength() {
68+
Arrays.asList("Apple", "Ant", "Bat").stream()
69+
.map(s -> s.length())
70+
.forEach(p -> System.out.println(p));
71+
// Arrays.asList("Apple", "Ant", "Bat").stream()
72+
// .map(s -> s.length())
73+
// .forEach(p -> System.out.println(p.length()));
74+
}
75+
76+
private static int fpMaxListInt(List<Integer> numbers) {
77+
return numbers.stream().max((n1, n2) -> Integer.compare(n1, n2)).get();
78+
}
79+
80+
private static Optional fpOptinalMaxListInt(List<Integer> numbers) {
81+
return numbers.stream().filter(number -> number % 2 == 0).max((n1, n2) -> Integer.compare(n1, n2));
82+
}
83+
84+
private static int fpMinListInt(List<Integer> numbers) {
85+
return numbers.stream().min((n1, n2) -> Integer.compare(n1, n2)).get();
86+
}
87+
88+
private static List<Integer> fpOdd(List<Integer> numbers) {
89+
return numbers.stream()
90+
.filter(number -> number % 2 == 1)
91+
.collect(Collectors.toList())
92+
;
93+
}
94+
95+
private static List<Integer> fpSquare2() {
96+
return IntStream.range(1, 11)
97+
.map(e -> e * e)
98+
.boxed()
99+
.collect(Collectors.toList())
100+
;
101+
}
102+
103+
104+
105+
private static List<Integer> fpEven(List<Integer> numbers) {
106+
return numbers.stream()
107+
.filter(number -> number % 2 == 0)
108+
.collect(Collectors.toList());
109+
}
110+
111+
private static int normalSum(List<Integer> numbers) {
112+
int sum = 0;
113+
for(int number:numbers) {
114+
sum += number;
115+
}
116+
return sum;
117+
}
118+
119+
private static int fpSum(List<Integer> numbers) {
120+
return numbers.stream().reduce(0, (number1, number2) -> number1 + number2);
121+
}
122+
123+
private static int fpSumOdd(List<Integer> numbers) {
124+
return numbers.stream() // Lambda Expression is a shortcut for creating a function
125+
.filter(number -> number % 2 == 1) // Intermediate Operation
126+
.reduce(0, (number1, number2) -> number1 + number2); // Terminal Operation : consume the result stream
127+
}
128+
129+
private static int fpSumOdd2(List<Integer> numbers) {
130+
return numbers.stream()
131+
.filter(number -> number % 2 == 1)
132+
.reduce(0, (number1, number2) -> {
133+
return number1 + number2;
134+
}
135+
);
136+
}
137+
138+
}

in28Munites-JavaCourse-ForBeginners/src/com/in28munites/FunctionalProgramming/LambdaBehindTheScreensRunner.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,20 @@ public Integer apply(Integer number) {
3333
}
3434

3535
public class LambdaBehindTheScreensRunner {
36-
37-
3836

3937
public static void main(String[] args) {
4038

4139
Arrays.asList(23,43,34,45,36,48).stream()
42-
.filter(n -> n%2 ==0)
43-
.map(n -> n * n)
44-
.forEach(e -> System.out.println(e));
40+
.filter(n -> n%2 ==0)
41+
.map(n -> n * n)
42+
.forEach(e -> System.out.println(e))
43+
;
4544

4645
Arrays.asList(23,43,34,45,36,48).stream()
47-
.filter(new EvenNumberPredicate())
48-
.map(new NumberSquareMapper())
49-
.forEach(new SystemOutConsumer());
46+
.filter(new EvenNumberPredicate())
47+
.map(new NumberSquareMapper())
48+
.forEach(new SystemOutConsumer())
49+
;
5050

5151
//.map(n -> n * n)
5252
//<R> Stream<R> map(Function<? super T, ? extends R> mapper);
@@ -65,7 +65,7 @@ public static void main(String[] args) {
6565
//3.Returning functions from methods
6666

6767
Predicate<? super Integer> evenPredicate = createEvenPredicate();
68-
Predicate<? super Integer> oddPredicate = n -> n%2 ==1;
68+
Predicate<? super Integer> oddPredicate = n -> n % 2 == 1;
6969

7070
Arrays.asList(23,43,34,45,36,48).stream()
7171
.filter(evenPredicate)
@@ -74,7 +74,7 @@ public static void main(String[] args) {
7474
}
7575

7676
private static Predicate<? super Integer> createEvenPredicate() {
77-
return n -> n%2 ==0;
77+
return n -> n % 2 == 0;
7878
}
7979

8080
}

in28Munites-JavaCourse-ForBeginners/src/com/in28munites/FunctionalProgramming/MethodReferencesRunner.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@ public static void main(String[] args) {
1616

1717
Arrays.asList("Ant", "Bat", "Cat", "Dog", "Elephant")
1818
.stream()
19-
.map(String::length)
20-
.forEach(MethodReferencesRunner::print);
19+
.map(String::length)
20+
// .forEach(System.out::println);
21+
.forEach(MethodReferencesRunner::print)
22+
;
2123

2224
Arrays.asList(23,45,67,34)
2325
.stream()
24-
.filter(n -> n%2==0)
26+
.filter(n -> n % 2 == 0)
2527
.max( (n1,n2) -> Integer.compare(n1,n2) )
2628
.orElse(0);
2729

28-
Integer max = Arrays.asList(23, 45, 67, 34).stream()
30+
Integer max = Arrays.asList(23, 45, 67, 34)
31+
.stream()
2932
.filter(MethodReferencesRunner::isEven)
3033
.max(Integer::compare)
3134
.orElse(0);

0 commit comments

Comments
 (0)