除了集合的stream()方法,还有什么方式?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中,除了使用集合(如List、Set等)的stream()
方法来创建流之外,还有其他几种方式可以生成流。这些方法适用于不同的场景和数据源,以下是一些常见的生成流的方法:
数组转换为流:
Arrays.stream(T[] array)
方法可以从数组直接生成流。例如,对于一个整型数组,你可以这样操作:int[] numbers = {1, 2, 3}; Stream<int[]> numberStream = Arrays.stream(numbers);
文件读取为流:
Files.lines(Path path)
可以从文本文件的每一行生成一个字符串流。例如:Stream<String> lines = Files.lines(Paths.get("path/to/file.txt"));
静态工厂方法:
IntStream.range(int startInclusive, int endExclusive)
用于生成一个整数范围的流,DoubleStream.generate(Math::random)
用于生成无限的随机数流。Random类:
Random.ints()
等方法结合Stream的API来创建特定类型的流,如随机数流。BufferedReader.lines():
BufferedReader
对象,可以调用其lines()
方法来获取每一行内容的流。Pattern.splitAsStream(CharSequence input):
Stream<String> words = Pattern.compile(",").splitAsStream("one,two,three");
Collections.singleton(T t) 和 Collections.singletonMap(K k, V v):
stream()
方法获得流。Stream.of(T... values):
Stream<String> stream = Stream.of("a", "b", "c");
Optional.stream():
Optional
对象,可以调用其stream()
方法将其转换为包含零个或一个元素的流。以上方法覆盖了从基本类型数组、文件、静态工厂方法到特定类实例等多种数据源生成流的方式,可以根据具体需求选择合适的方法。