Перейти к основному содержимому

56 записей с тегом "Java Streams"

Посмотреть все теги

· 3 мин. чтения

1. Обзор

API-интерфейсы map() и flatMap() основаны на функциональных языках. В Java 8 мы можем найти их в Optional , Stream и в CompletableFuture (хотя и под немного другим именем).

Потоки представляют собой последовательность объектов, а необязательные — это классы, представляющие значение, которое может присутствовать или отсутствовать. Среди других агрегатных операций у нас есть методы map() и flatMap() .

Несмотря на то, что оба имеют одинаковые типы возврата, они совершенно разные. Давайте объясним эти различия, проанализировав некоторые примеры потоков и опций.

2. Карта и плоская карта в опциях

· 4 мин. чтения

1. Введение

В этом руководстве мы обсудим несколько примеров использования Java Stream ` для работы [с ](/lessons/b/-java-8-streams-introduction)Map[ . ](/lessons/b/-java-hashmap) Стоит отметить, что некоторые из этих упражнений могут быть решены с использованием двунаправленной структуры данных Map` , но здесь нас интересует функциональный подход.

Во-первых, мы объясним основную идею, которую будем использовать для работы с Maps и Stream s. Затем мы представим несколько разных проблем, связанных с Maps , и их конкретные решения с использованием Stream s.

2. Основная идея

· 2 мин. чтения

1. Обзор

Java 8 Stream API представил два метода, которые часто понимают неправильно: findAny() и findFirst() .

В этом кратком руководстве мы рассмотрим разницу между этими двумя методами и когда их использовать.

2. Использование Stream.findAny()

· 9 мин. чтения

1. Обзор

В Java 8 появился Stream API , который позволяет легко перебирать коллекции как потоки данных. Также очень легко создавать потоки, которые выполняются параллельно и используют несколько ядер процессора.

Можно подумать, что всегда быстрее разделить работу на большее количество ядер. Но это часто не так.

В этом руководстве мы рассмотрим различия между последовательными и параллельными потоками. Сначала мы рассмотрим пул fork-join по умолчанию, используемый параллельными потоками.

Мы также рассмотрим последствия использования параллельного потока для производительности, включая локальность памяти и затраты на разделение/слияние.

Наконец, мы порекомендуем, когда имеет смысл преобразовать последовательный поток в параллельный.

· 4 мин. чтения

1. Обзор

В этом кратком руководстве мы поговорим о методе toMap() класса Collectors . Мы будем использовать его для сбора Stream в экземпляр Map .

Для всех рассмотренных здесь примеров мы будем использовать список книг в качестве отправной точки и преобразовывать его в различные реализации карты .

2. Список на карту

· 4 мин. чтения

1. Введение

В этом кратком руководстве мы рассмотрим различные способы вычисления суммы целых чисел с помощью Stream API .

Для простоты мы будем использовать в наших примерах целые числа; тем не менее, мы можем применить те же методы к longs и double.

2. Использование Stream.reduce()

· 9 мин. чтения

1. Введение

В этом руководстве мы увидим, как работает сборщик groupingBy , на различных примерах.

Чтобы понять материал, изложенный в этом руководстве, нам потребуются базовые знания о функциях Java 8. Мы можем взглянуть на введение в потоки Java 8 и руководство по коллекторам Java 8 для этих основ.

  2.10.  Объединение нескольких атрибутов сгруппированного результата

· 6 мин. чтения

1. Обзор

В этом руководстве мы кратко рассмотрим некоторые из наиболее интересных новых функций Java 8.

Мы поговорим об интерфейсе по умолчанию и статических методах, справочнике по методам и необязательных.

Мы уже рассмотрели некоторые возможности версии Java 8 — потоковый API , лямбда-выражения и функциональные интерфейсы — поскольку это обширные темы, заслуживающие отдельного рассмотрения.

2. Интерфейс по умолчанию и статические методы

· 8 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим основные функции Protonpack , библиотеки, которая расширяет стандартный Stream API , добавляя некоторые дополнительные функции.

Обратитесь к этой статье, чтобы узнать об основах Java Stream API.

2. Зависимость от Maven

Чтобы использовать библиотеку Protonpack, нам нужно добавить зависимость в наш файл pom.xml :

· 8 мин. чтения

1. Обзор

Stream API предоставляет богатый набор промежуточных, редукционных и терминальных функций, которые также поддерживают распараллеливание.

В частности, операции потока сокращения позволяют нам получить один единственный результат из последовательности элементов , многократно применяя операцию объединения к элементам в последовательности.

В этом руководстве мы рассмотрим операцию Stream.reduce() общего назначения и рассмотрим ее в некоторых конкретных случаях использования.

2. Ключевые понятия: тождество, аккумулятор и сумматор.