Первый опыт потока
Поток является важной особенностью операционных коллекций в Java 8. Давайте сначала посмотрим, как поток определяется на Java:
«Последовательность элементов, поддерживающих последовательные и параллельные агрегатные операции».
Давайте интерпретируем вышеупомянутое предложение:
1. Поток - это коллекция элементов, которая делает поток похожим на итератор;
2. Он может поддерживать операции агрегирования исходного потока последовательно и параллельно.
Есть много способов создания потока, и есть несколько других способов создать коллекцию в дополнение к наиболее распространенным.
Список по потоку
Список наследников от интерфейса коллекции, а коллекция предоставляет метод Stream ().
List <Integer> list = lists.newarraylist (1, 2, 3); Stream <Integer> Stream = list.stream ();
Массив к потоку
Для массивов массивы предоставляет метод потока ().
String [] arr = new String [] {"a", "b", "c"}; Stream <String> stream = arrays.stream (arr); Карта для потока
Карта - это не последовательность, а не коллекция, и нет никакого способа преобразовать ее непосредственно в Stream (). Но intrySet () установлен, и он может быть преобразован.
Map <string, object> map = maps.newhashmap (); stream <intpirt <string, object >> stream = map.entryset (). Stream ();
Создайте потоки напрямую
Stream также предоставляет API для непосредственного генерирования потока, который можно примерно понимать как список. Потому что внутренний реализуется массивом.
Stream <Integer> integerStream = Stream.of (1, 2, 3);
Прочитайте поток файла
Те, кто использовал Linux, будут восхищаться символами трубы на командной строке, а символ трубы может быть обработан непрерывно. Аналогичные функции могут быть реализованы при чтении файлов в Java.
Long Uniquewords = 0; try (Stream <string> line = files.lines (paths.get ("data.txt"), charset.defaultcharset ())) {uniquewords = lines.flatmap (l -> arrays.stream (l.split ("))). Дискрипт () .count (); Генерировать бесконечный поток через функции
Поток обеспечивает Iterate для генерации бесконечной последовательности, бесконечной последовательности, основанной на начальном значении. Вы можете использовать Lambda для установки правил генерации последовательностей, таких как добавление 2 каждый раз.
Stream.iterate (0, n -> n + 2) .limit (10) .foreach (System.out :: println);
Например, последовательность Fibonacci
Stream.iterate (new int [] {0, 1}, t -> new int [] {t [1], t [0] + t [1]}) .limit (20) .map (t -> t [0]) .foreach (System.out :: println); Stream также предоставляет еще один метод генерации последовательностей. Получает определенную пользовательскую сгенерированную функцию последовательности Intsupplier.
Intsupplier fib = new intsupplier () {private int int pretal = 0; Частный int current = 1; @Override public int getAsint () {int oldprevious = this.previous; int nextvalue = this.previous + this.current; this.previous = this.current; this.current = nextValue; вернуть старого; }}; Intstream.generate (fib) .limit (10) .foreach (System.out :: println);Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.