-
Notifications
You must be signed in to change notification settings - Fork 14
/
ConsumerDemo.java
118 lines (102 loc) · 3.35 KB
/
ConsumerDemo.java
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package dustin.examples.jdk8;
import static java.lang.System.out;
import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Demonstrates use of {@code Consumer} via JDK.
*/
public class ConsumerDemo
{
private final static Logger ourLogger
= Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
/**
* Demonstrate use of {@code Consumer} with {@code Stream.peek}.
*/
public void demonstratePeek()
{
Stream.of("one", "two", "three", "four")
.filter(e -> e.length() > 3)
.peek(e -> out.println("Filtered value: " + e))
.map(String::toUpperCase)
.peek(e -> out.println("Mapped value: " + e))
.collect(Collectors.toList());
}
/**
* Demonstrate use of {@code Consumer} with {@code Stream.forEach}.
*/
public void demonstrateForEach()
{
Set.of("one", "two", "three", "four").stream()
.forEach(i -> out.println(i.toUpperCase()));
}
/**
* Demonstrate use of {@code Consumer} with {@code Stream.forEachOrdered}.
*/
public void demonstrateForEachOrdered()
{
List.of("one", "two", "three", "four").stream()
.forEachOrdered(i -> out.println(i.toUpperCase()));
}
public void demonstrateForEachAndForEachOrderedOnStreamDirectly()
{
Stream.of("one", "two", "three", "four")
.forEach(i -> out.println(i.toUpperCase()));
Stream.of("one", "two", "three", "four")
.forEachOrdered(i -> out.println(i.toUpperCase()));
}
public void demonstrateForEachOnCollectionsWithImplicitStream()
{
Set.of("one", "two", "three", "four")
.forEach(i -> out.println(i.toUpperCase()));
List.of("one", "two", "three", "four")
.forEach(i -> out.println(i.toUpperCase()));
}
public void demonstrateMapWithBiConsumer()
{
Map.of("Denver", "Colorado",
"Cheyenne", "Wyoming",
"Salt Lake City", "Utah",
"Boise", "Idaho")
.forEach((c, s) -> out.println(c + " is the capital of " + s));
}
public void demonstrateOptionalIfPresent()
{
getMiddleName(true).ifPresent(n -> out.println("Middle Name: " + n));
}
public void demonstrateOptionalIfPresentOrElse()
{
getMiddleName(false).ifPresentOrElse(
n -> out.println("Middle Name: " + n),
() -> displayMissingMiddleName());
}
private Optional<String> getMiddleName(final boolean present)
{
return present ? Optional.of("Wayne") : Optional.empty();
}
private void displayMissingMiddleName()
{
out.println("No middle name provided!");
}
public void demonstrateStackWalkerForEach()
{
StackWalker.getInstance().forEach(out::println);
}
public static void main(final String[] arguments)
{
final ConsumerDemo instance = new ConsumerDemo();
instance.demonstratePeek();
instance.demonstrateForEach();
instance.demonstrateForEachOrdered();
instance.demonstrateForEachAndForEachOrderedOnStreamDirectly();
instance.demonstrateForEachOnCollectionsWithImplicitStream();
instance.demonstrateStackWalkerForEach();
instance.demonstrateMapWithBiConsumer();
instance.demonstrateOptionalIfPresentOrElse();
}
}