JAVA核心卷2——流的创建(创建方式)

本文介绍 Java 中 Stream API 的核心概念及其实用性,展示了如何使用 Stream 进行数据处理,包括创建不同类型的流,如静态方法创建、空流、常量流、随机流等,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、流是什么

1、流提供一种让我们可以在比集合更高的概念级别上指定计算的数据视图,通过使用流,我们可以说明想要完成什么任务,而不是说明如何去实现它。“做什么而非怎么做”。

二、主要特点

1、流不储存元素。

2、流的操作不会修改其数据源。

3、流的操作是尽可能惰性执行。

三、流创建的方式

1、静态方法创建,借助:stream.of();

2、创建一个空流,借助:stream.empty();

3、创建一个常量流,借助:stream.generate();

4、创建一个随机流,借助:stream.generate();

5、创建一个种子函数流,将借助:stream.iterate(种子,函数);

6、创建一个正则表达式分割流,借助:Pattern.compile("\\PL+").splitAsStream(集合参数);

四、源代码实例

package com.com.yt;

import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class CreatingStreams {
    /*
    * 这个方法设置了输出单词的
    * */
    public static <T> void show(String title, Stream<T> stream){

        //设置输出单词的个数
        final int SIZE=10;

        //
        List<T> firstElements =stream.limit(SIZE+1).collect(Collectors.toList());
        System.out.print(title+":");
        for (int i = 0;i<firstElements.size();i++){
            if(i>0) System.out.print(",");
            if (i<SIZE) System.out.print(firstElements.get(i));
            else System.out.print("...");
        }
        System.out.println();
    }
    public static void main(String[] args)throws IOException {

        //设置txt文件的路径。
        Path path = Paths.get("G:/testtxt/alice.txt");

        //创建一个文件对象,设置编码格式为:utf_8的编码格式。
        String contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);

        //设置切割方式,传递给show方法一个contents文件对象。
        Stream<String> words= Stream.of(contents.split("\\PL+"));
        //调用自己编写的show方法,传递一个String的标题提示,第二个参数是产生一个流,stream方法将任何集合转换为一个流。
        show("words",words);

        //一、创建一个:静态方法创建流。
        Stream<String> song = Stream.of("gently","down","the","stream");
        show("song",song);
        //二、创建一个:不包含任何元素的空流。
        Stream<String> silence = Stream.empty();
        show("silence",silence);
        //三、创建一个:常量值的流
        Stream<String> echos = Stream.generate(()->"Echo");
        show("echos",echos);
        //创建一个:创建一个随机数的流。
        Stream<Double> randoms = Stream.generate(Math::random);
        show("randoms",randoms);
        //创建一个:种子函数流。
        Stream<BigInteger> integers = Stream.iterate(BigInteger.ONE,n->n.add(BigInteger.ONE));
        show("integers",integers);
        //创建一个:正则表达式分割流
        Stream<String> wordsAnotherWay = Pattern.compile("\\PL+").splitAsStream(contents);
        show("wordsAnotherWay",wordsAnotherWay);

        try (Stream<String> lines = Files.lines(path,StandardCharsets.UTF_8)){
            show("lines",lines);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值