Skip to content

метод stream()

Метод stream() действительно является частью интерфейса Collection, который реализуется многими классами в Java, включая List, Set, и Queue. Это позволяет использовать потоковые операции на всех коллекциях, которые наследуют этот интерфейс. Вот некоторые из классов и интерфейсов, которые предоставляют метод stream():

1. Интерфейс Collection

  • Все классы, которые реализуют интерфейс Collection, имеют метод stream(). Это включает в себя:
  • List (например, ArrayList, LinkedList)
  • Set (например, HashSet, TreeSet, LinkedHashSet)
  • Queue (например, PriorityQueue, LinkedList)

2. Классы, реализующие Collection

  • ArrayList: java List<String> list = new ArrayList<>(); Stream<String> stream = list.stream();

  • LinkedList: java List<String> linkedList = new LinkedList<>(); Stream<String> stream = linkedList.stream();

  • HashSet: java Set<String> set = new HashSet<>(); Stream<String> stream = set.stream();

  • TreeSet: java Set<String> treeSet = new TreeSet<>(); Stream<String> stream = treeSet.stream();

  • LinkedHashSet: java Set<String> linkedHashSet = new LinkedHashSet<>(); Stream<String> stream = linkedHashSet.stream();

  • PriorityQueue: java Queue<String> queue = new PriorityQueue<>(); Stream<String> stream = queue.stream();

3. Интерфейс Map

  • Хотя Map не является подтипом Collection, он также предоставляет методы для работы с потоками через его представления:
  • keySet(): возвращает Set ключей, который можно преобразовать в поток.
  • values(): возвращает Collection значений, который также можно преобразовать в поток.
  • entrySet(): возвращает Set пар "ключ-значение", который можно преобразовать в поток.

Примеры:

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;

public class MapStreamExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Alice", 30);
        map.put("Bob", 25);
        map.put("Charlie", 35);

        // Поток ключей
        Stream<String> keyStream = map.keySet().stream();

        // Поток значений
        Stream<Integer> valueStream = map.values().stream();

        // Поток пар "ключ-значение"
        Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream();
    }
}

4. Массивы

  • Хотя массивы не являются коллекциями, вы можете создать поток из массива с помощью метода Arrays.stream().
import java.util.Arrays;
import java.util.stream.Stream;

public class ArrayStreamExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        IntStream intStream = Arrays.stream(array); // Для примитивных типов
        Stream<Integer> stream = Arrays.stream(new Integer[]{1, 2, 3, 4, 5}); // Для объектов
    }
}

Заключение

Метод stream() доступен во многих классах и интерфейсах, которые реализуют Collection, а также в представлениях Map. Это делает API потоков очень универсальным и позволяет легко обрабатывать данные из различных источников.