java8新特性 流
时间:2019-01-30
本文章向大家介绍java8新特性 流,主要包括java8新特性 流使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 流的介绍
使用流,就是说明想要完成什么任务,而不是说明如何去实现它。将操作的调度留给具体的实现去解决。如,我们想要计算某个属性的平均值,我们就通过指定数据源和该属性完成,比如,一箱苹果的斤数平均值,我们可以通过指定苹果所在集合与斤数对应的属性。然后流库就可以对数据进行优化,例如,使用多线程来计算总和与个数,并将结果合并。流主要用来以做什么而非怎么做来处理集合。
从迭代到流的操作举例:
String contents = new String(Files.readAllBytes(
Paths.get("C:\\Users\\x1c\\Downloads\\corejava\\corejava\\v2ch01\\streams\\CountLongWords.java")), StandardCharsets.UTF_8);
List<String> words = Arrays.asList(contents.split("\\PL+"));
long count = 0;
for (String w : words)
{
if (w.length() > 12) count++;
}
System.out.println(count);
完全可以简化为
count = words.stream().filter(w -> w.length() > 12).count();
2 流的创建与使用
对于实现了Collection类的集合我们可以使用stream方法将集合转换为一个流。
对于数组,我们可以使用Stream.of方法。
Stream<String> words = Stream.of(contents.split("\\PL+"));
使用Array.stream(array,from,to)可以从数组中位于form(包括)和to(不包括)的元素中创建一个流。
使用Stream.empty创建一个不包含任何元素的流
Stream接口有两个用于创建无限流的静态方法,generate方法接受一个不包含任何引元的函数(Supplier<T>接口的对象)
Stream<String> echos = Stream.generate(() -> "Echo");
Stream.iterate可以产生一个无限序列,它接受一个种子值,以及一个函数,(UnaryOperation<T>),并且反复的将该函数应用到之前的结果上
Stream<BigInteger> integers = Stream.iterate(BigInteger.ONE,
n -> n.add(BigInteger.ONE));
获取指定文件的行作为流
try (Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8))
{
show("lines", lines);
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
- Python实现验证码识别
- 详解PHP神奇又有用的Trait
- laravel实现按时间日期进行分组统计方法示例
- Pytorch 使用CNN图像分类的实现
- PHP实现无限极分类的两种方式示例【递归和引用方式】
- 记录模型训练时loss值的变化情况
- phpstorm 配置xdebug的示例代码
- 利用Python实现Excel的文件间的数据匹配功能
- PHP设计模式之简单工厂和工厂模式实例分析
- PHP实现数据四舍五入的方法小结【4种方法】
- 如何在Windows中安装多个python解释器
- PHP设计模式之抽象工厂模式实例分析
- 使用python matploblib库绘制准确率,损失率折线图
- Django REST Swagger实现指定api参数