Сложность решения некоторых простых задач в сравнении с функциональными языками программирования.
JSR-335: Lambda expressions
Stream API
Предназначен для обработки данных
Не хранит данные
Нельзя переиспользовать
Можно преобразовать в другие типы данных
BaseStream
BaseStream
interface BaseStream<T , S extends BaseStream<T , S>>
BaseStream
Methodsclose(): void
isParallel(): boolean
iterator(): Iterator<Т>
spliterator(): Spliterator<Т>
parallel(): S
sequential(): S
unordered(): S
BaseStream
InheritorsStream<T>
IntStream
DoubleStream
LongStream
Stream<T>
map(Function<? super T, ? extends R> mapper): Stream<R>
filter(Predicate<? super T> predicate): Stream<T>
sorted(): Stream<T>
concat(Stream<? extends T> a, Stream<? extends T> b): Stream<T>
distinct(): Stream<T>
skip(long n): Stream<T>
sorted(Comparator<? super T> comparator): Stream<T>
takeWhile(Predicate<? super T> predicate): Stream<T>
dropWhile(Predicate<? super T> predicate): Stream<T>
limit(long maxSize): Stream<T>
forEach(Consumer<? super T> action): void
allMatch(Predicate<? super T> predicate): boolean
anyMatch(Predicate<? super T> predicate): boolean
count(): long
noneMatch(Predicate<? super T> predicate): boolean
toArray(): Object[]
collect(Collector<? super T, A, R> collector): <R, A> R
flatMap(Function<? super T, ? extends Stream<? extends R>> mapper): <R> Stream<R>
findFirst(): Optional<T>
findAny(): Optional<T>
max(Comparator<? super T> comparator): Optional<T>
min(Comparator<? super T> comparator): Optional<T>
Stream
Stream
default Stream<E> stream
default Stream<E> parallelStream
Arrays.stream(T[] array)
Stream.of(T..values)
Optional
Optional<T>.empty(): <T>
filter(Predicate<? super T> predicate): Optional<T>
flatMap(Function<? super T,Optional<U>> mapper): Optional<U>
get(): T
ifPresent(Consumer<? super T> consumer): void
isPresent(): boolean
map(Function<? super T,? extends U> mapper): Optional<U>
Optional<T>.of(T value): <T>
Optional<T>.ofNullable(T value): <T>
orElse(T other): T
orElseGet(Supplier<? extends T> other): T
<X extends Throwable> orElseThrow(Supplier<? extends X> exceptionSupplier): T
collect()
Collectors
MethodstoList(): List<T>
toSet(): Set<T>
toMap(): Map<K, U>
toCollection(): Collection<T>
groupingBy(Function<? super T, ? extends K>): Collector<T, ?, Map<K, List<T>>>
partitioningBy(Predicate<? super T>): Collector<T, ?, Map<Boolean, List<T>>>
counting()
summing()
maxBy(Comparator<? super T>)
minBy(Comparator<? super T>)
summarizing()
mapping()
parallel()
sequential()
forEachOrdered()
unordered()