1. Обзор
Java 8 Stream
API представил два метода, которые часто понимают неправильно: findAny()
и findFirst()
.
В этом кратком руководстве мы рассмотрим разницу между этими двумя методами и когда их использовать.
Вообще говоря, документы Java настоятельно не рекомендуют сериализовать лямбда-выражение . Это потому, что лямбда-выражение будет генерировать синтетические конструкции. И эти синтетические конструкции имеют несколько потенциальных проблем: отсутствие соответствующей конструкции в исходном коде, различия между различными реализациями компилятора Java и проблемы совместимости с другой реализацией JRE. Однако иногда необходима сериализация лямбды.
В этом руководстве мы собираемся объяснить, как сериализовать лямбда-выражение и лежащий в его основе механизм.
Когда мы используем сериализацию Java для сериализации или десериализации объекта, его класс и нестатические поля должны быть сериализуемыми. В противном случае это приведет к NotSerializableException
. Точно так же при сериализации лямбда-выражения мы должны убедиться, что его целевой тип и захватываемые аргументы являются сериализуемыми .
В этом руководстве мы увидим, как работает сборщик groupingBy , на различных примерах.
Чтобы понять материал, изложенный в этом руководстве, нам потребуются базовые знания о функциях Java 8. Мы можем взглянуть на введение в потоки Java 8 и руководство по коллекторам Java 8 для этих основ.
2.10. Объединение нескольких атрибутов сгруппированного результата
В этом руководстве мы кратко рассмотрим некоторые из наиболее интересных новых функций Java 8.
Мы поговорим об интерфейсе по умолчанию и статических методах, справочнике по методам и необязательных.
Мы уже рассмотрели некоторые возможности версии Java 8 — потоковый API , лямбда-выражения и функциональные интерфейсы — поскольку это обширные темы, заслуживающие отдельного рассмотрения.
Java 8 была выпущена 18 марта 2014 года, и с самого начала наблюдалась сильная тенденция внедрения.
В октябре 2014 года Typesafe выпустила ранние цифры , в которых уровень принятия новой версии языка составлял 27% .
А в мае 2015 года я провел опрос , который показал, что это число составляет 38% .
Вот результаты нового опроса о внедрении Java 8 / Spring 4 / Spring Boot: http://t.co/ylEBUBmaLh (более 1500 голосов) — ForEach (@foreach) 1 июня 2015 г.
Разработчики Java — динамичная, постоянно меняющаяся группа.
За последние пару недель я провел здесь, на ForEach, отраслевой опрос, чтобы узнать, как Java 8, Spring 4 и более новый Spring Boot принимаются и используются в отрасли .
Мы получили более 1500 ответов на опрос, что привело к очень интересным цифрам:
В Java 8 представлены новые API для даты
и времени
, чтобы устранить недостатки старых java.util.Date
и java.util.Calendar
.
В этом руководстве давайте начнем с проблем в существующих API-интерфейсах даты
и календаря
и обсудим, как их решают новые API -интерфейсы даты
и времени Java 8.
Мы также рассмотрим некоторые основные классы нового проекта Java 8, которые являются частью пакета java.time
, такие как LocalDate
, LocalTime
, LocalDateTime
, ZonedDateTime
, Period
, Duration
и их поддерживаемые API.
даты
/ времени
В этом руководстве мы рассмотрим коллекторы Java 8, которые используются на последнем этапе обработки Stream
.
Чтобы узнать больше о самом Stream
API, мы можем прочитать эту статью .
Если мы хотим увидеть, как использовать возможности Collectors для параллельной обработки, мы можем посмотреть на этот проект.
()
В Java 8 появилась концепция потоков S как
эффективного способа выполнения массовых операций над данными. А параллельные потоки
можно получить в средах, поддерживающих параллелизм.
Эти потоки могут иметь повышенную производительность за счет накладных расходов на многопоточность.
В этом кратком руководстве мы рассмотрим одно из самых больших ограничений Stream
API и посмотрим, как заставить параллельный поток работать с пользовательским экземпляром ThreadPool , в качестве альтернативы —
есть библиотека, которая обрабатывает это .
поток
Java 8 представила несколько улучшений интерфейса Comparator
, в том числе несколько статических функций, которые очень полезны при определении порядка сортировки коллекций.
Интерфейс Comparator
также может эффективно использовать лямбда-выражения Java 8. Подробное объяснение лямбда-выражений и компаратора
можно найти здесь , а хронику применения компаратора
и сортировки можно найти здесь .
В этом руководстве мы рассмотрим несколько функций, представленных для интерфейса Comparator
в Java 8 .