In Java SE 8, new classes have been added and existing classes have been enhanced to take advantage oflambda expressions and streams, which are described in the lessonAggregate Operations in the Java Tutorials. You can find most of these new and enhanced classes in the following packages:
java.util: An existing package which, in addition to thejava.lang.invoke package, integrates theJava Collections Framework withstreams and provides general utility functionality used by streams.java.util.function: A new package that contains general purpose functional interfaces that providetarget types for lambda expressions andmethod references.java.util.stream: A new package that contains the majority of interfaces and classes that provide functionality to streams andaggregate operationsMany additions to existing classes take advantage of streams. Other additions include methods that accept instances of functional interfaces, which you can invoke with lambda expressions or method references.
java.util.functionjava.util.streamClasses such asBoolean,Integer, and other object wrapper classes for primitive types (seeAutoboxing and Unboxing) are listed here because they have been enhanced with methods that are suitable for targets of method references. For example, you can use the methodInteger.sum as a method reference, as demonstrated in the following example that adds integers contained in a list:
Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8 };List<Integer> listOfIntegers = new ArrayList<>(Arrays.asList(intArray)); System.out.println("Sum of integers: " + listOfIntegers .stream() .reduce(Integer::sum).get());(Note that you can also add integers contained in a stream with the methodIntStream.sum.)
| Package | New Classes | Modified Classes |
java.io | UncheckedIOException | BufferedReader |
| not applicable | AutoCloseableThreadLocalStringIterableCharSequenceBooleanIntegerLongFloatDouble | |
java.nio.file | not applicable | Files |
java.util | PrimitiveIteratorSpliteratorDoubleSummaryStatisticsIntSummaryStatisticsLongSummaryStatisticsOptionalOptionalDoubleOptionalIntOptionalLongSpliteratorsSplittableRandomStringJoiner | ArraysBitSetCollectionComparatorIteratorListMapMap.EntryLinkedHashMapRandomTreeMap |
java.util.concurrent | not applicable | ThreadLocalRandom |
java.util.jar | not applicable | JarFile |
java.util.zip | not applicable | ZipFile |
java.util.logging | not applicable | Logger |
java.util.regex | not applicable | Pattern |