Table of Contents
Java software for your computer, or the Java Runtime Environment, is also referred to as the Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, Virtual Machine, Java VM, JVM, VM, Java plug-in, Java plugin, Java add-on or Java download. Introduced in Java 8, the Stream API is used to process collections of objects. A stream is a sequence of objects that supports various methods which can be.
- PART 1: FUNDAMENTALS
- Chapter 1. Java 8: why should you care?00:09:21
- Chapter 1. Java’s place in the programming language ecosystem00:08:40
- Chapter 1. Passing code to methods with behavior parameterization00:07:42
- Chapter 1. Functions in Java00:07:20
- Chapter 1. Passing code: an example00:05:01
- Chapter 1. Streams00:09:08
- Chapter 1. Default methods00:10:13
- Chapter 2. Passing code with behavior parameterization00:07:54
- Chapter 2. Behavior parameterization00:06:30
- Chapter 2. Tackling verbosity00:09:38
- Chapter 3. Lambda expressions00:07:13
- Chapter 3. Where and how to use lambdas00:08:21
- Chapter 3. Putting lambdas into practice: the execute around pattern00:06:28
- Chapter 3. Using functional interfaces00:07:20
- Chapter 3. Type checking, type inference, and restrictions00:09:38
- Chapter 3. Method references00:08:48
- Chapter 3. Putting lambdas and method references into practice!00:09:28
- Chapter 3. Similar ideas from mathematics00:05:19
- PART 2: FUNCTIONAL-STYLE DATA PROCESSING
- Chapter 4. Introducing streams00:08:08
- Chapter 4. Getting started with streams00:06:25
- Chapter 4. Streams vs. collections00:09:18
- Chapter 4. Stream operations00:06:04
- Chapter 5. Working with streams00:05:01
- Chapter 5. Mapping00:06:32
- Chapter 5. Finding and matching00:06:15
- Chapter 5. Reducing00:11:24
- Chapter 5. Putting it all into practice00:08:52
- Chapter 5. Putting numerical streams into practice: Pythagorean triples00:05:57
- Chapter 5. Building streams00:07:45
- Chapter 5. Streams from functions: creating infinite streams!00:06:41
- Chapter 6. Collecting data with streams00:08:47
- Chapter 6. Reducing and summarizing00:07:27
- Chapter 6. Generalized summarization with reduction00:11:01
- Chapter 6. Grouping00:04:55
- Chapter 6. Collecting data in subgroups00:07:29
- Chapter 6. Partitioning00:05:29
- Chapter 6. The Collector interface00:11:24
- Chapter 6. Developing your own collector for better performance00:09:49
- Chapter 7. Parallel data processing and performance00:07:46
- Chapter 7. Measuring stream performance00:06:29
- Chapter 7. Using parallel streams correctly00:07:32
- Chapter 7. The fork/join framework00:09:00
- Chapter 7. Work stealing00:03:41
- Chapter 7. Spliterator00:03:35
- Chapter 7. Implementing your own Spliterator00:10:24
- PART 3: EFFECTIVE JAVA 8 PROGRAMMING
- Chapter 8. Refactoring, testing, and debugging00:08:14
- Chapter 8. From imperative data processing to Streams00:06:16
- Chapter 8. Refactoring object-oriented design patterns with lambdas00:06:11
- Chapter 8. Observer00:07:11
- Chapter 8. Testing lambdas00:10:14
- Chapter 9. Default methods00:07:57
- Chapter 9. API version 200:08:39
- Chapter 9. Usage patterns for default methods00:06:56
- Chapter 9. Resolution rules00:10:32
- Chapter 10. Using Optional as a better alternative to null00:06:26
- Chapter 10. Problems with null00:04:50
- Chapter 10. Introducing the Optional class00:07:02
- Chapter 10. Chaining Optional objects with flatMap00:08:27
- Chapter 10. Default actions and unwrapping an optional00:07:26
- Chapter 10. Practical examples of using Optional00:09:10
- Chapter 11. CompletableFuture: composable asynchronous programming00:11:52
- Chapter 11. Implementing an asynchronous API00:09:28
- Chapter 11. Make your code non-blocking00:08:40
- Chapter 11. Using a custom Executor00:05:26
- Chapter 11. Pipelining asynchronous tasks00:10:02
- Chapter 11. Combining two CompletableFutures—dependent and independent00:05:15
- Chapter 11. Reacting to a CompletableFuture completion00:08:01
- Chapter 12. New Date and Time API00:08:12
- Chapter 12. Instant: a date and time for machines00:04:43
- Chapter 12. Manipulating, parsing, and formatting dates00:10:06
- Chapter 12. Working with different time zones and calendars00:07:35
- PART 4: BEYOND JAVA
- Chapter 13. Thinking functionally00:09:21
- Chapter 13. What’s functional programming?00:08:04
- Chapter 13. Referential transparency00:10:22
- Chapter 13. Recursion vs. iteration00:07:15
- Chapter 14. Functional programming techniques00:09:04
- Chapter 14. Persistent data structures00:10:50
- Chapter 14. Lazy evaluation with streams00:05:39
- Chapter 14. Your own lazy list00:07:31
- Chapter 14. Pattern matching00:07:34
- Chapter 14. Miscellany00:09:34
- Chapter 15. Blending OOP and FP: comparing Java 8 and Scala00:08:02
- Chapter 15. Basic data structures: List, Set, Map, Tuple, Stream, Option00:10:28
- Chapter 15. Functions00:09:15
- Chapter 15. Classes and traits00:04:39
- Chapter 16. Conclusions and where next for Java00:11:27
- Chapter 16. What’s ahead for Java?00:08:31
- Chapter 16. Richer forms of generics00:09:12
- Chapter 16. Value types00:08:44