Course Content
Stream API
Stream API
1. Fundamentals and Functional Capabilities of Stream API
ArchitecturePrinciplesWhat Is a Functional Interface?Predicate: Data FilteringChallenge: Filtering Corporate Email AddressesFunction: Data TransformationChallenge: Income Tax CalculationComparable: Natural Ordering of DataComparator: Custom Comparison of DataChallenge: Sorting Employees Consumer: Processing Data Supplier: Data GenerationBi-versions of Functional InterfacesChallenge: Filtering Users by Two CriteriaBinaryOperator: Combining Two Values
2. Intermediate Operations in Stream API
Transforming Elements with the map() MethodFiltering Elements with the filter() MethodChallenge: Factory Product FilteringWorking with Nested Structures with the flatMap() MethodArranging Items in Order with the sorted() MethodChallenge: Selecting the Best Cars on the Production LineEliminating Duplicates with the distinct() MethodChallenge: Factory Quality ControlRestricting and Skipping Elements with the limit() and skip() MethodsChallenge: Finding the Top 3 Hardest-Working EmployeesIntermediate Processing with the peek() Method
3. Terminal Operations in the Stream API
collect() Gathering Stream Elements into a CollectionChallenge: Build a Custom Collector for Category CountingCollectors Utility Class for Stream APIProcessing Elements with the forEach() MethodHandling Values with the Optional ClassAggregating Elements with the reduce() MethodChallenge: Calculating Total Cost with Discounts and TaxCalculating Stream Statistics with count(), max(), and min()Retrieving Stream Summary Metrics with summaryStatistics() MethodRetrieving Elements from a Stream with findFirst() and findAny()Challenge: Selecting Random Products Within a CategoryChecking Stream Elements Against a Condition with allMatch()Challenge: Ensuring Fast Delivery for Expensive Products
4. Practical Applications of Stream API
Challenge: Build a Custom Collector for Category Counting
Task
Swipe to start coding
You need to implement a custom Collector
that processes a list of products and counts how many products belong to each category.
- In the
supplier()
method, return a newHashMap
. - In the
accumulator()
method, call theget()
method on theproduct
map to retrieve the value of the"category"
key and pass it as the first parameter of themerge()
method. - For the second parameter in the same method, provide the initial value (
1
). - In the
combiner()
method, pass thekey
ofmap2
as the first parameter of themerge()
method. - For the second parameter in the same method, pass the
value
of themap2
. - In the
finisher()
method, return themap
without modifying it using a lambda. - In the
characteristics()
method, return a set that ensures the collection remains unchanged (IDENTITY_FINISH
). - In the
collect()
method, pass the implementation of theCollector
interface (CategoryCountCollector
).
Solution
solution
Everything was clear?
Thanks for your feedback!
Section 3. Chapter 2
Challenge: Build a Custom Collector for Category Counting
Task
Swipe to start coding
You need to implement a custom Collector
that processes a list of products and counts how many products belong to each category.
- In the
supplier()
method, return a newHashMap
. - In the
accumulator()
method, call theget()
method on theproduct
map to retrieve the value of the"category"
key and pass it as the first parameter of themerge()
method. - For the second parameter in the same method, provide the initial value (
1
). - In the
combiner()
method, pass thekey
ofmap2
as the first parameter of themerge()
method. - For the second parameter in the same method, pass the
value
of themap2
. - In the
finisher()
method, return themap
without modifying it using a lambda. - In the
characteristics()
method, return a set that ensures the collection remains unchanged (IDENTITY_FINISH
). - In the
collect()
method, pass the implementation of theCollector
interface (CategoryCountCollector
).
Solution
solution
Everything was clear?
Thanks for your feedback!
Section 3. Chapter 2