Java流 – Java创建流
已将新方法添加到Java库以返回流。
我们可以通过以下方式创建流。
- 从值创建流
- 从空流创建流
- 从函数创建流
- 从数组创建流
- 从集合创建流
- 从文件创建流
- 从其他来源创建流
在以下部分中,我们将学习如何创建流。
从值创建流
我们可以使用Stream接口的()从单个值和多个值创建顺序流。
<T> Stream<T> of(T t) <T> Stream<T> of(T...values)
从方法签名,我们可以看到第一个of()方法从单个值创建流,而第二个of()方法从不同长度参数创建流
以下代码创建包含单个值的流。
import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = Stream.of("www.w3cschool.cn"); stream.forEach(System.out::println); } }
上面的代码生成以下结果。
例2
以下代码创建具有四个字符串的流。
import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = Stream.of("XML", "Java", "CSS", "SQL"); stream.forEach(System.out::println); } }
上面的代码生成以下结果。
例3
以下代码从对象数组创建流。
import java.util.stream.Stream; public class Main { public static void main(String[] args) { String[] names = { "XML", "Java", "SQL", "CSS" }; Stream<String> stream = Stream.of(names); stream.forEach(System.out::println); } }
上面的代码生成以下结果。
流构建器
我们可以使用Stream.Builder<T>
创建流。
以下代码创建流构建器。
Stream.Builder<String> builder = Stream.builder();
import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = Stream.<String>builder() .add("XML") .add("Java") .add("CSS") .add("SQL") .build(); stream.forEach(System.out::println); } }
上面的代码生成以下结果。
IntStream范围
我们可以使用IntStream接口中的以下两种方法从一系列int值创建IntStream。
IntStream range(int start, int end) IntStream rangeClosed(int start, int end).
它们创建一个包含开始和结束之间的有序整数的IntStream。
指定的结束在range()方法中是独占的,并且在rangeClosed()方法中是包含的。
以下代码使用这两种方法创建一个IntStream,它的整数为1,2,3,4和5作为其元素:
import java.util.stream.IntStream; public class Main { public static void main(String[] args) { IntStream oneToFive = IntStream.range(1, 6); //IntStream oneToFive = IntStream.rangeClosed(1, 5); oneToFive.forEach(System.out::println); } }
像IntStream接口一样,LongStream类还包含range()和rangeClosed()方法,它们接受类型为long的参数,并返回一个LongStream。
上面的代码生成以下结果。
空流
空流没有元素。
我们可以使用empty()静态方法从Stream接口以创建空的顺序流。
import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = Stream.empty(); stream.forEach(System.out::println); } }
IntStream,LongStream和DoubleStream接口还包含一个empty()静态方法来创建一个空的基本类型流。
以下代码创建一个空的整数流。
IntStream numbers = IntStream.empty();