Java基础 自学讲义 卷2 一.流库

终于开始学卷二啦~ ?

关于流Stream的知识这篇博文讲的很好 Java Stream详解 | 鸟窝

1.1.从迭代到流

看一个demo用于筛选文档中长度大于某个值的单词的数量:

        String file = new String(Files.readAllBytes(Paths.get("alphabet.txt")), StandardCharsets.UTF_8);
        List<String> s = Arrays.asList(file.split("\\PL+"));
        

		//Java8流的方法
		long count = s.parallelStream()//这里用的并行流, 串行流直接stream
                .filter(w->w.length()>=6)
                .count();
        System.out.println(count);


		//迭代的方法
        long countt = 0;
        for(String i : s){
            if(i.length()>=7) countt++;
        }
        System.out.println(countt);

先读入一个文件, 用String的构造器配合Files的io接口, 用split分割筛选出所有的连续英文单词;

note:这里split使用正则筛选做split分割, 这里的\PL+是匹配任意长度(>=1)的非英文字符, 一旦匹配到非英文字符就做分割, 所以分割之后获得的就是一个个纯连续英文单词;
正则
也就是说 \PL+匹配非英文字母的字符 也可以用\PZ+匹配非分隔符的字符 用\PN+来匹配非数字的字符~
但是我觉得这里可能会有歧义啊, 如何区分是在按这个策略匹配还是我想匹配\PLLLL这样的字符串呢?
也可以这样来匹配:

List<String> s = Arrays.asList(file.split("[^a-zA-Z]+"));

1.2 流的创建

1.3 常用的几个方法

filter用于筛选流的某些元素, 产生一个新的满足filter条件的流;
map是对流中的每个元素传入一个lambda表达式做处理得到处理后的流;
flatmap是对于每个元素经过处理返回多个元素然后把得到的多个元素组合进一个新的流里, map 生成的是个 1:1 映射,每个输入元素,都按照规则转换成为另外一个元素。还有一些场景,是一对多映射关系的,这时需要 flatMap。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值