Index
A
- abstract methods
- accessors (getters), wrapping result in Optionals, Solution
- accumulator argument in Collectors, Discussion
- adjusters and queries (for temporal values), Problem-Using TemporalQuery
- and method (Predicate), Discussion
- andThen method (Consumer), Discussion
- andThen method (Function), Discussion
- anonymous inner classes, Discussion
- anyMatch, allMatch, and noneMatch methods (Stream), Problem-Discussion
- ArrayList<String> and ArrayList<Object>, What Some Developers Don’t Realize
- arrays
- Async versions, CompletableFuture coordinating methods, Discussion
- at method, Discussion
- AutoCloseable interface, streams and, Discussion
B
- BaseStream class, unordered method, Discussion
- BasicFileAttributes object, Discussion
- between method
- BiConsumer interface, Discussion, Discussion
- String.collect method taking BiConsumer arguments, Discussion
- BiFunction interface, Discussion, Basic reduce implementations
- CompletableFuture handle method taking, Discussion
- BigInteger class, isProbablyPrime method, Discussion
- binary operators
- BinaryOperator class, Basic reduce implementations, Discussion
- BiPredicate class, Discussion
- boxed streams, Problem-Discussion
- using boxed method to convert IntStream to Stream, Discussion
- BufferedReader class, lines method, Solution, Discussion
- busy waiting, Discussion
C
- Calendar class (see java.util.Calendar class)
- Callable interface
- anonymous inner class implementation, substituting lambda for, Discussion
- ExecutorService.submit method taking a Callable, Discussion
- cancel method (CompletableFuture), Discussion
- characteristics function (Collectors), Discussion
- chars and codePoints methods (CharSequence), Solution
- ChronoUnit class, Discussion, Discussion, Discussion
- class name, instance method invoked via, Syntax
- class-level members, using in interfaces, Discussion
- closure composition, in Consumer interface, Discussion
- closures, Discussion
- collect method (Stream)
- converting stream of characters to a string, Discussion
- instances of classes implementing Collectors as arguments, Discussion
- overloaded versions, Discussion
- with Supplier, accumulator, and combiner, Discussion
- Collection interface, Discussion
- collections
- adding a linear collection to a map, Problem-Discussion
- Collection.stream method, Discussion
- Collections class, sort method, Discussion, Discussion
- converting a stream to a collection, Problem-Discussion
- creating from primitive streams, Problem-Discussion
- creating immutable collections in Java 9, Problem-Discussion
- generic, What Everybody Knows
- immutable, creating using Stream API, Problem-Discussion
- iterating over, Problem-Discussion
- of primitives, Discussion
- returning a collection and filtering out nulls, Discussion
- static methods in java.util.Collections, What Everybody Knows
- stream processing versus, Discussion
- Collector interface, Map.Entry.comparingByKey and Map.Entry.comparingByValue
- Collectors class, Comparators and Collectors
- collectingAndThen method, Solution-Discussion
- converting from a stream to a collection, Discussion
- counting method, Discussion, Discussion
- downstream collectors, filtering and flatMapping, Problem-The flatMapping method
- groupingBy method, Discussion, Discussion
- maxBy method, Discussion
- methods in Collectors analogous to methods in Stream, Discussion
- methods using Function, Discussion
- partitioningBy and groupingBy methods, Solution-Discussion
- partitioningBy method, using predicates, Discussion
- Stream.collect method taking a Collector, Discussion
- summarizingDouble method, Discussion
- toMap method, Map.Entry.comparingByKey and Map.Entry.comparingByValue
- using toMap with Function.identity, Solution-Discussion
- combiners, combiner method in Collectors, Discussion
- Comparable interface, Discussion, Comparator.comparing
- Comparator interface, Discussion, Discussion
- CompletableFuture class, Discussion, Discussion, Problem-Discussion
- benefit of, Discussion
- completing, example, Discussion
- completing, methods for, Discussion
- coordinating CompletableFutures, Problem-Discussion
- runAsync and supplyAsync methods, Discussion
- supplyAsync method, Discussion
- using completeExceptionally on, Discussion
- using supplyAsync to retrieve a product, Discussion
- compose method (Function), Discussion
- composition methods, Solution-Discussion
- computeIfAbsent method (Map), computeIfAbsent
- computeIfPresent method (Map), computeIfPresent
- concatenating streams, Problem-See Also
- concurrency, Parallelism and Concurrency
- ConcurrentMap, creating using Collectors.toConcurrentMap method, Discussion
- constructor references, Problem-Arrays
- Consumer interface, Discussion
- consumers, Problem-See Also
- contravariant, PECS
- copy constructor, Copy constructor
- count method (Stream), Discussion
- counting method (Collectors), Discussion, Discussion
- covariant, PECS
D
- daemon threads, Discussion
- Date-Time classes in java.time package, Problem-Discussion
- datesUntil method (LocalDate), Discussion
- DateTimeFormatter class, Solution
- DayOfWeek enum, Discussion
- default methods in interfaces, Discussion, Problem-See Also, Discussion
- deferred execution, Supplier support for, Discussion, Discussion
- depth-first traversal of directories, Discussion
- diamond operator (<>), What Everybody Knows
- DirectoryStream interface, Discussion, Discussion, Discussion
- DoubleConsumer interface, Discussion
- doubles method (Random), Discussion
- DoubleStream interface, Discussion
- DoubleSummaryStatistics class, Discussion
- downstream collectors, Discussion, Problem-The flatMapping method
- dropWhile method (Stream), takeWhile and dropWhile
- Duration class, Discussion, Using the Duration class
E
- easy versus simple, Parallelism and Concurrency
- effectively final variables, Discussion
- empty method (Optional), Discussion
- empty streams
- using anyMatch, allMatch, and nonMatch methods on, Discussion
- using findFirst method on, Discussion
- using reduce with empty stream and binary operator, Discussion
- encounter order, Discussion
- epoch, Discussion
- event listeners, Discussion
- exception handling
- ExecutionException, Discussion
- Executor interface, Discussion
- CompletableFuture methods using an Executor, Discussion
- ExecutorService interface, Discussion, Discussion
- extends keyword, Upper Bounded Wildcards
F
- Fibonacci numbers, recursive calculation of, computeIfAbsent
- file I/O, File I/O-Discussion
- FilenameFilter interface, Discussion
- Files class
- FileVisitOption enum, Discussion
- filtering method (Collectors), The filtering method
- filters
- find method (Files), Solution
- findAny method (Stream), Discussion
- using in parallel after random delay, Discussion
- using on sequential and parallel streams, Discussion
- findFirst method (Stream), Discussion
- finishers, Discussion
- flatMap method (Optional), Solution-Discussion
- flatMap method (Stream)
- flatMapping method (Collectors), The flatMapping method
- forEach method (Iterable and Map), Solution-Discussion
- forEach method (Iterable), taking Consumer as argument, Discussion
- ForkJoinPool class, Discussion
- format method (LocalDate), Discussion
- formatting java.time Date-Time classes
- functional interfaces
- functional programming features in Java 8, The Basics
- functions
- Future interface, Problem-See Also
- cancel method, Discussion
- chaining Futures together using CompletableFuture, Discussion
- retrieving a value from a Future, Discussion
- submitting a Callable and returning the Future, Discussion
- using lambda expression and check if Future is done, Discussion
G
- generics and Java 8, Background-Summary
- getAvailableZoneIds method, Discussion
- getOrDefault method (Map), Other methods
- Greenwich/UTC time, time zone offsets from, Discussion
- GregorianCalendar, converting to ZonedDateTime, Discussion
- groupingBy method (Collectors), Discussion, Discussion, Discussion
- Gson JSON parsing library, Discussion
I
- I/O (input/output), File I/O
- identity method (Function), Discussion
- identity method (UnaryOperator), Discussion
- ifPresent method (Optional), Discussion, The ifPresentOrElse method
- ifPresentOrElse method (Optional), The ifPresentOrElse method
- immutability
- implementations of interface methods, Discussion
- info method (Logger), using a Supplier, Discussion
- instance method invoked via class name, Syntax
- Instant class
- IntBinaryOperator class, Basic reduce implementations
- IntConsumer interface, Discussion
- Integer class, min and max methods, Binary operators in the library
- intermediate operations on stream pipelines, Solution
- ints, longs, and doubles static methods (Random), Discussion
- IntStream interface, Discussion
- invariant, PECS
- isDone method (Future), Discussion
- isNull method (Objects), Discussion
- ISO 8601 specification, time zone IDs, definitions of, Discussion
- Iterable interface
- iterate method (Stream), Discussion, Discussion
J
- Java 8, changes in, The Basics
- Java 9 additions, Java 9 Additions-Discussion
- date ranges, Problem-Discussion
- downstream collectors, filtering and flatMapping, Problem-The flatMapping method
- immutable collections, Problem-Discussion
- modules in Jigsaw, Problem-Modules
- new features not covered, Java 9 Additions
- Optional type, new methods, Problem-The ifPresentOrElse method
- private methods in interfaces, Problem-Discussion
- streams, new functionality in, Problem-takeWhile and dropWhile
- Java Platform Module System (JPMS), Discussion
- java.base module, Modules
- java.io.FilenameFilter interface, Discussion
- java.lang.CharSequence, chars and codePoints methods, Solution
- java.math.BigInteger class, Discussion
- java.nio.file package, File I/O
- java.sql.Date class, The java.time Package
- java.sql.Timestamp class, conversion methods, Discussion
- java.time package, The java.time Package
- java.util.Calendar class, The java.time Package
- converting to java.time.ZonedDateTime, Discussion
- converting to LocalDateTime
- java.util.Comparable interface, Discussion
- java.util.concurrent package, Parallelism and Concurrency, Discussion
- java.util.concurrent.ForkJoinPool class, Solution
- java.util.concurrent.Future interface (see Future interface)
- java.util.Date class, The java.time Package
- java.util.function package, The java.util.function Package-Discussion
- java.util.Iterable, Consumer as argument in forEach method, Discussion
- java.util.logging.Logger class, Discussion, Discussion
- java.util.Objects class (see Objects class)
- java.util.stream.Collectors (see Collectors class)
- Jigsaw, modules in, Problem-Modules
- JMH (Java Micro-benchmark Harness), Timing using JMH
- Joda-Time library, The java.time Package
- JPMS (Java Platform Module System), Discussion
- JSON parsing library (Gson), Discussion
- JSR 376, the Java Platform Module System, Discussion
- JVM, modularization in Java 9, Modules
L
- lambda expressions, The Basics, Problem-Discussion
- accessing local variable defined outside of, Problem-See Also
- assigning to a variable, Discussion
- checked exceptions and, Problem-Discussion
- compatibility with method signature, Discussion
- implementing compare method in Comparator, Discussion
- issues with, Issues with Streams, Lambdas, and Method References
- method references and, Problem-See Also
- replacing Callable anonymous inner class implementation, Discussion
- supplying an IntBinaryOperator, Basic reduce implementations
- using extracted method for exception handling, Problem-Discussion
- using in Thread constructor, Discussion
- using to invoke constructor reference, Discussion
- lazy streams, Problem-Discussion
- lines method (BufferedReader), Discussion
- lines method (Files), Discussion
- list method (Files), Discussion
- List<? extends Number>, Upper Bounded Wildcards
- List<? super Number>, Lower Bounded Wildcards
- List<?>, Unbounded Wildcards
- List<String> and List<Object>, What Some Developers Don’t Realize
- lists
- LocalDate class
- LocalDateTime class
- applying a time zone using at method, Discussion
- atZone method, Discussion
- converting java.util.Calendar to, by generating and parsing timestamp string, Discussion
- converting java.util.Calendar to, using Calendar getter methods, Discussion
- now method, Discussion
- of method, Discussion
- ofInstant method, Discussion
- plus and minus methods, Discussion
- with methods, Discussion
- localized date-time formatter, Discussion
- LocalTime class
- Logger class
- info method, taking Supplier as argument, Discussion
- overloads for all logging methods taking a Supplier, Discussion
- logging
- LongConsumer interface, Discussion
- longs method (Random), Discussion
- LongStream interface, Discussion, Summing primitives
M
- map method (Optional), Discussion
- map method (Stream), Stream.map
- map-filter-reduce process, Discussion
- Map.computeIfAbsent method, using Function, Discussion
- Map.Entry interface, Solution-Discussion, Discussion
- maps
- adding a linear collection to a Map, Problem-Discussion
- creating an immutable Map, Discussion
- creating immutable Maps, Discussion
- creating with Collectors.toMap method, Discussion
- creating with groupingBy collector and sorting, Discussion
- flatMapping downstream collector, The flatMapping method
- iterating over, using forEach method of Map, Discussion
- Map.of method, Discussion
- mapping Optionals using Optional.map, Problem-Discussion
- new default methods in Map, Problem-Other methods
- sorting, Problem-Discussion
- unmodifiableMap method, Collections, Discussion
- using a Map on Optionals, The stream method
- mapToObject method, using to convert primitives to instances of wrapper class, Discussion
- Math.random method, using as a supplier, Discussion
- max and min values, finding, Problem-Discussion
- max method (Stream), Stream.max
- merge method (Map), Other methods
- method references, The Basics, Problem-See Also
- minus methods, Discussion, Discussion
- module descriptor, Modules
- module-info.java file, Modules
- updating for Supplier module (example), Modules
- modules, Problem-Modules
- Month enum, Discussion
- Moore's Law, The Basics
- multiple bounds (type parameters), Multiple Bounds
- multiple inheritance, Discussion
- multiprocessor environments, The Basics
O
- Object class method, in functional interface, Discussion
- objects
- Objects class, Solution-Discussion
- of method, Discussion
- Collector.of method, overloaded versions, Discussion
- for date/time classes, Discussion
- in List, Set, and Map, Discussion, Solution
- Map.of method, Discussion
- Optional class, Discussion, The stream method
- overloaded version in localied date-time formatter, Discussion
- Set.of method, Discussion
- ofInstant method, Discussion, Discussion
- ofNullable method (Optional), Discussion, The stream method
- ofNullable method (Stream), The ofNullable method
- ofPattern method, Discussion
- Optional type, The Optional Type-Discussion, Discussion
- creating an Optional, Problem-Discussion
- filter method, using predicates, Discussion
- flatMap and map methods, Discussion
- flatMap versus map method, Problem-Discussion
- from reduction operations on IntStream, Built-in reduction operations
- Java 9 additions, Problem-The ifPresentOrElse method
- mapping Optionals with map method, Problem-Discussion
- orElseGet method, taking Supplier as argument, Discussion
- retrieving values from, Problem-Discussion
- returned by Stream.findAny method, Discussion
- using in accessors and mutators, Problem-Discussion
- OptionalDouble class, Discussion
- OptionalInt class, Discussion
- OptionalLong class, Discussion
- or method (Optional), The or method
- or method (Predicate), Discussion
- orElse method, Discussion
- orElseGet method, Discussion
- orElseThrow method, Discussion
P
- palindrome, checking string for
- parallel method, Discussion
- parallel streams, Discussion
- parallelism and concurrency, Parallelism and Concurrency
- parallelism flag, Discussion
- parallelStream method, Discussion
- parse method
- parsing java.time Date-Time classes, Solution-Discussion
- partitioning and grouping, Problem-Discussion
- downstream collectors produced by Colletors partitioningBy and groupingBy methods, Problem-Discussion
- grouping strings by length, using Collectors.groupingBy, Discussion
- partitioning strings using Collectors.partitionBy, Discussion
- partitioningBy method (Collectors), Discussion
- PaydayAdjuster class (example), Using TemporalAdjuster
- PECS (Producer Extends, Consumer Super), PECS
- peek method (Stream), debugging streams with, Discussion
- performance measurements, Timing using JMH
- Period class, Discussion, Using the Period class
- plus methods, Discussion, Discussion
- predicates, Problem-Discussion
- adding constants for common use cases, Discussion
- BiPredicate determining wheter Path should be returned, Discussion
- Collectors.partitioningBy method taking a Predicate, Discussion, Discussion
- composition methods in Predicate interface, Discussion
- determining if any, all, or no stream elements match a Predicate, Problem-Discussion
- fashioning composite predicates, Discussion
- finding strings that satisfy an arbitrary predicate, Discussion
- Predicate instance as filter in Objects isNull and nonNull methods, Discussion
- Predicate interface, methods, Discussion
- Stream.iterate method taking a Predicate, Using iterate with a Predicate
- use by other methods in standard library, Discussion
- using to find strings of given length, Discussion
- prefixes on Date-Time methods, Discussion
- prime number check, Discussion
- primitive types, using in generic collections, What Everybody Knows
- private methods in interfaces, Problem-Discussion
- processors, number of, Discussion
- Producer Extends, Consumer Super (see PECS)
- properties, Discussion
- pure functions, The Basics, Discussion
R
- Random class, static ints, longs, and doubles methods, Discussion
- random numbers, creating stream of within given bounds, Problem-Discussion
- range and rangeClosed methods, Discussion
- reduce method (Stream)
- reduction operations using reduce, Problem-The most general form of reduce
- region names, finding from UTC offsets, Problem-Discussion
- replace method (Map), Other methods
- requireNonNull method (Objects), Discussion
- reverseOrder method (Comparator), Discussion
- runAsync method (CompletableFuture), Discussion, Discussion
- Runnable interface, anonymous inner class implementation, Discussion
- Runtime.getRuntime.availableProcessors, Discussion
S
- SAM (single abstract method), Discussion
- SecureRandom class, Discussion
- sequential method, Discussion
- sequential streams, Discussion
- sets
- short-circuiting operations, Discussion, Solution
- side effects, Consumer interface and, Discussion
- simple versus easy, Parallelism and Concurrency
- single abstract method (SAM), Discussion
- sorted method, Discussion
- sorting
- static methods in interfaces, Discussion, Problem-See Also, Discussion
- Stream interface
- stream method (Optional), Discussion, The stream method
- streams, The Basics, Discussion, Streams-Discussion
- and AutoCloseable, Discussion
- check sorting using reduce, Problem-Discussion
- concatenating, Problem-See Also
- converting a list to and from a stream, Copy constructor
- converting from sequential to parallel streams, Problem-Discussion
- creating parallel streams with parallelStream method, Discussion
- creating sequential streams, Discussion
- using parallel method on existing stream, Discussion
- converting stream to IntStream and calling sum, Discussion
- converting strings to and from, Problem-Discussion
- converting to a collection, Problem-Discussion
- counting elements in, Problem-Discussion
- creating, Problem-See Also
- creating collection from primitive stream, Problem-Discussion
- creating immutable collections using Collections.collectingAndThen, Discussion
- creating stream of dates, Using TemporalAdjuster
- debugging with peek, Problem-Discussion
- file I/O and, File I/O
- filtering using predicates, Discussion
- findFirst method on Stream, Discussion
- finding first element, Problem-Discussion
- flatMap versus map methods, Problem-Discussion
- invoking instance method via class name in method references, Syntax
- issues with, Issues with Streams, Lambdas, and Method References
- lazy, Problem-Discussion
- new functionality added in Java 9, Problem-takeWhile and dropWhile
- of random numbers within given bounds, Problem-Discussion
- parallel, deciding when to use, Problem-Summing primitives
- processing using consumers, Discussion
- reduction operation using reduce, Problem-The most general form of reduce
- retrieving a files as a Stream, Problem
- sorted method, using with a Comparator, Solution-Discussion
- Stream methods analogous to Collectors methods, Discussion
- stream processing versus collections, Discussion
- Stream.allMatch method, using predicates, Discussion
- Stream.map method, Function argument in, Discussion
- summary statistics for stream of numerical values, Problem-See Also
- using anyMatch, allMatch, and noneMatch methods, Problem-Discussion
- using to process text file contents, Problem-Discussion
- strings
- collecting using a StringBuilder, Binary operators in the library
- concatenating from a stream using reduce, Binary operators in the library
- converting to and from streams, Problem-Discussion
- grouping by length, using Collectors.groupingBy, Discussion
- partitioning, using Collectors.partitioningBy, Discussion
- sorting by length, then equal lengths lexicographically, Discussion
- sorting lexicographically, Discussion
- sorting using sorted method on Stream, Discussion
- sorting using Stream.reduce, Discussion
- sum method, Upper Bounded Wildcards
- summarizingDouble method (Collectors), Discussion
- summary statistics for a stream, Problem-See Also
- limitations of summary statistics classes, Discussion
- super keyword
- suppliers, Problem-Discussion
- additional Supplier interfaces in java.util.function, Discussion
- Collectors.toCollection method taking a Supplier, Discussion
- implementing Supplier interface, Solution
- Objects.requireNotNull method taking Supplier as argument, Discussion
- Optional.or method taking a Supplier, The or method
- orElseGet method, taking Supplier as argument, Discussion
- orElseThrow method taking a Supplier, Discussion
- other examples from standard library using Suppliers, Discussion
- overloaded Logger methods taking a Supplier, Discussion-Discussion
- Stream.collect method taking a Supplier, Discussion
- Supplier interface, Discussion
- supplier method in Collectors, Discussion
- support for deferred execution, Discussion
- supplyAsync method (CompletableFuture), Discussion, Discussion, Discussion
- System.setProperty method, setting degree of parallelism, Discussion
T
- takeWhile method (Stream), takeWhile and dropWhile
- TemporalAccessor class, Using TemporalQuery
- TemporalAdjuster class, Discussion, Discussion
- TemporalAmount interface, Discussion
- TemporalField class, Discussion
- TemporalQueries class
- TemporalQuery class, Discussion
- TemporalUnit interface, Discussion, Discussion, Discussion
- terminal operations, Discussion, Solution
- thenAccept method (CompletableFuture), Discussion
- thenApply method (CompletableFuture), Discussion
- thenCombine method (CompletableFuture), Discussion
- thenComparing method (Comparator), Discussion
- thenCompose method (CompletableFuture), Discussion
- this, using with method references, Syntax
- Thread class
- thread pool
- timing operations using JMH, Timing using JMH
- toArray method (Collectors), Discussion
- toCollection method (Collectors), Discussion
- toConcurrentMap method (Collectors), Discussion
- toInstant method, Discussion
- toMap method (Collectors), Discussion, Discussion
- try-with-resources block, Discussion, Discussion
- try/catch block, lambda expression with, Discussion, Discussion
- type erasure in Java, A Note on Type Erasure
- type parameters (in generics), What Everybody Knows
U
- umodifiable methods in Collections, Discussion
- UnaryOperator class, Discussion, Discussion
- unchecked exceptions, Discussion
- Unix-based operating systems, epoch definition, Discussion
- unordered streams, Discussion
- until method, Using the Period class
- UTC, time zone offsets from, Discussion, Discussion
- utility classes, Discussion