метод 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 потоков очень универсальным и позволяет легко обрабатывать данные из различных источников.