JavaRush /Java блог /Random /Кофе-брейк #184. Как создавать потоки в Java: 5 способов ...

Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java

Статья из группы Random

Как создавать потоки в Java: 5 способов создания потоков

Источник: Asynq Из этой статьи вы узнаете различные способы создания потоков Java в зависимости от источника данных. Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java - 1Потоки — одна из самых важных функций, появившихся в Java 8. Потоки позволяют разработчикам Java преобразовывать коллекцию в потоки элементов и определять промежуточные и терминальные операции. По сути, это дает разработчику больше возможностей для написания лаконичного и элегантного кода с меньшим количеством строк и более декларативным характером. Существует несколько способов создания потоков. Сегодня мы рассмотрим каждый из них.

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

1. Потоковый интерфейс (Stream Interface) состоит из двух статических методов, которым мы можем передать либо один объект, либо набор объектов. Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java - 2

Stream<String> stream1 = Stream.of("test1");
Stream<String> stream2 = Stream.of("test1", "test2", "test3", "test1");
2. Когда у нас есть потоки, мы можем использовать промежуточные и терминальные операции. Ниже показаны некоторые операции, которые мы можем выполнять с потоком. Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java - 33. В этом примере я хочу отфильтровать только отдельные элементы из stream2 для вывода.

stream2
        .distinct()
        .forEach(System.out::println)
4. Streams Interface также позволяет создавать потоки из паттерна Builder.

Stream<Integer> build1 = Stream.<Integer>builder()
        .add(2)
        .add(1)
        .add(3)
        .add(5)
        .build();

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

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

String[] domains = {"abc.com", "pqr.net", "tuf.org", "abc.com"};
У нас есть массив источников данных domains. Давайте создадим из него потоки, чтобы мы могли использовать красивое функциональное программирование.

Stream<String> domainsStream = Stream.of(domains);
Теперь давайте посмотрим, как мы можем создавать потоки из примитивных элементов. Чтобы создавать потоки из примитивного массива, мы должны использовать тип IntStream. Класс Arrays предоставляет потоковый метод для преобразования примитива в IntStream.

int[] ints = {1,2,3};
IntStream stream = Arrays.stream(ints);
Arrays.stream(ints).forEach(System.out::println);

Создание потоков из функций

Мы также можем создавать потоки из бесконечной последовательности чисел. Streams Interface предоставляет такие методы, как generate() и iterate(), которые можно использовать для создания такой бесконечной последовательности. Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java - 4

Использование generate(Supplier<? extends T> s)

Как видите, generate принимает поставщика в качестве аргумента для генерации бесконечной последовательности чисел. Мы передаем метод randomUUID из класса UUID для генерации уникального идентификатора каждый раз, когда вызывается generate. Далее мы ограничиваем результат до 10 и выводим результат.

Stream
        .generate(UUID::randomUUID)
        .limit(10)
        .forEach(System.out::println);

Использование Iterate(T Seed, UnaryOperator<T> f)

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

Stream
        .iterate(10, n->n+1)
        .limit(10)
        .forEach(System.out::println);
Учтите, что если мы используем параллельный поток, то мы можем не получить желаемый поток, поскольку порядок может не соблюдаться.

Создание потока из коллекции

Collection Interface предоставляет поток и метод parallelStream для создания потока из коллекции. Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java - 5

Set<Integer> set = new HashSet<>(List.of(3,2,1));
System.out.println(set.
        stream().
        sorted().
        reduce(Integer::max));

Создание потоков из File IO (файлового ввода-вывода)

Класс Java NIO File и BufferedReader также предоставляют возможность создания потока из метода lines().

// NIO Files.lines()
try (Stream<String> lines = Files.lines(Path.of(""))){
    System.out.println(lines);
}catch (Exception ex){
    System.out.println(ex);
}
// bufferedreader
BufferedReader bufferedReader = new BufferedReader(new FileReader(""));
try(Stream<String> lines = bufferedReader.lines()){
    lines.forEach(System.out::println);
}catch (Exception ex){
    System.out.println(ex);
}

Создание пустых потоков

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

Stream<String> empty = Stream.empty();

Заключение

В этой статье мы обсудили различные способы создания потоков из разных источников ввода, таких как коллекции, массивы, ввод-вывод и так далее. Потоки дают возможность писать функциональный код с ленивыми вычислениями операций (lazy evaluation).

Как получить случайное число в Java

Источник: Medium Представленное здесь руководство объясняет способы генерации случайных чисел в языке Java. Кофе-брейк #184. Как создавать потоки в Java: 5 способов создания потоков. Как получить случайное число в Java - 6Чтобы получить случайное число в Java, вы можете использовать метод Math.random(). Этот метод помогает в генерации случайного числа в диапазоне от 0.0 до 1.0. Другие диапазоны могут быть достигнуты с помощью арифметических операций. Например, вот так происходит генерация случайного числа от 0 до 10:

double random = Math.random() * 10;
Также для генерации случайных чисел в Java можно использовать класс Random. Этот класс имеет несколько методов для получения случайных чисел: nextInt(), nextDouble() и nextLong(). Вот пример того, как вы можете использовать класс Random для генерации случайного целого числа от 0 до 10:

import java.util.Random;

// Создаем новый случайный объект
Random rand = new Random();

// Генерируем случайное число между 0 и 10
int random = rand.nextInt(10);
Обратите внимание, что метод nextInt() принимает целочисленный параметр (integer parameter), указывающий верхнюю границу генерируемого случайного числа. В приведенном выше примере верхняя граница равна 10, поэтому метод вернет случайное целое число от 0 до 9 (включительно). Чтобы получить случайное число от 1 до 10, нужно просто добавить 1 к результату метода nextInt():

// Генерируем случайное число между 0 и 10
int random = rand.nextInt(10) + 1;
Надеюсь, это вам поможет! Успехов в кодировании!
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ