Все, что вам нужно знать о потоке в Java



Эта статья познакомит вас с Stream in Java, пакетом, недавно представленным на Java, и подробно объяснит, что он может делать.

Новый дополнительный пакет в Java 8, известный как java.util.stream был добавлен для пользователям для эффективного программирования. Поток можно определить как последовательность объектов, поддерживающих несколько методов. В этой статье мы будем изучать Stream в

Следующие указатели будут рассмотрены в этой статье,





Прежде чем мы начнем с этой статьи о Stream In Java, давайте взглянем на некоторые важные функции,

Поток в Java: особенности

  • Поток не является структурой данных и не хранит элементы. Коллекции, массивы или каналы ввода-вывода - это то, откуда он принимает ввод.
  • Источник потока остается неизменным после выполнения над ним операций. Например, фильтрация потока просто создает новый поток без фильтруемых элементов вместо изменения исходного потока.
  • Поток поддерживает такие операции агрегирования, как фильтр, сокращение, сопоставление, поиск и т. Д.
  • Лень можно рассматривать как особенность потока, поскольку он оценивает коды только при необходимости.
  • Посещение элементов, присутствующих в потоке, может быть выполнено только один раз за время существования потока. Необходимо создать новый поток, чтобы повторно посетить те же элементы, присутствующие в источнике.

Продолжаем читать статью о Stream в Java



Пример удаленного вызова метода Java

Создание потоков

Потоки можно сгенерировать следующими способами:

  • ручей() - возвращается последовательный поток.Коллекциясчитается источником.
  • parallelStream () - возвращается параллельный поток. Сборник считается источником.
Список строк = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') Список отфильтрованных = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Продолжаем читать статью о Stream в Java

Операции над потоками:

Промежуточные операции:

карта



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

Список num = Arrays.asList (5,4,4,2,3,3) Список квадратов = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

фильтр

С помощью этого метода элементы могут быть удалены на основе критерия.

Имя списка = Arrays.asList ('суббота', 'воскресенье', 'четверг') Список res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

отсортированный

С помощью этого метода можно отсортировать поток.

Имя списка = Arrays.asList ('суббота', 'воскресенье', 'четверг') Список res = name.stream (). Sorted (). Collect (Collectors.toList ())

Поток в Java: Терминальные операции:

собирать

Результат обработки элементов потока можно объединить с помощью операции сбора.

Список num = Arrays.asList (4,3,2,5,6) Установить res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

для каждого

Этот метод используется для перебора каждого элемента, присутствующего в потоке.

Список num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))

уменьшить

С помощью этого метода элементы потока можно уменьшить до одного значения.

Список num = Arrays.asList (4,3,2,5) int even = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + я)

Переменной res изначально присваивается значение 0, и к нему добавляется i.

Продолжаем читать статью о Stream в Java

Фильтрация

Код можно отфильтровать с помощью метода потока. В следующем примере цена инструментов фильтруется.

import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = price}} public class Test {public static void main (String [] args) {List instrumentsList = new ArrayList () // Добавление продуктов toolsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentsList.add (new Instrument (2, 'Piano', 18000f)) instrumentsList.add (new Instrument (3, 'Flute', 15000f)) instrumentsList.add (new Instrument (4, 'Drums', 48000f)) toolsList.add (new Instrument ( 5, 'Укулеле', 32000f)) Список InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // фильтрация данных .map (p-> p.price) // получение цены .collect ( Collectors.toList ()) // собираем как список System.out.println (InstrumentPriceList2)}}
 Вывод: 

[48000,0, 32000,0]

Продолжаем читать статью о Stream в Java

Итерация:

Итерацию можно выполнить с помощью потока в java.

преобразовать строку в дату в Java
import java.util.stream. * открытый класс Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). limit (6) .forEach (System.out :: println)}}

Вывод:

4

8

12

16

двадцать

24

Давайте взглянем на другой пример, чтобы более эффективно понять концепцию Stream в java.

Пример:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// создание списка целых чисел List num = Arrays.asList (6,7,8,9 ) // используя метод карты List squares = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (squares) // создание списка String List days = Arrays.asList ('Friday', 'Saturday', 'Sunday') // список методов фильтрации res = days .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // сортированный метод List display = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / создание списка целых чисел List number = Arrays.asList (6,9,5,7,1) // метод collect возвращает набор Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // метод forEach num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / reduce метод int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (even)}}

Вывод:

[36, 49, 64, 81]

[Суббота Воскресенье]

[Пятница суббота воскресенье]

[81, 49, 1, 36, 25]

36

49

64

81 год

14

Потоки позволяют пользователю эффективно выполнять операции с элементами.

На этом мы подошли к концу статьи о Stream in Java. Если вы хотите узнать больше, посетите обучение Java от Edureka, надежной компании, занимающейся онлайн-обучением. Курс обучения и сертификации по Java J2EE и SOA от Edureka разработан, чтобы научить вас базовым и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.