Java8新特性 --Stream
2017-11-26 17:19
281 查看
一、 创建Stream
创建Stream方式一: 集合类的stream()或 parallelStream()java List<String> list = new ArrayList<>(); Stream<String> stream = list.stream();
创建Stream方式二: 通过Arrays中的静态方法stream()获取
String[] strings = new String[10]; Stream<String> stream1 = Arrays.stream(strings);
创建Stream方式三: 通过Stream 类中的静态方法of()
Stream<String> stream2 = Stream.of("aa", "bb", "cc");
创建Stream方式四: 无限流
迭代:
Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2);
生成:
Stream.generate(() -> Math.random());
二、中间操作
筛选和切片filter 接受Lambda, 从stream中筛选出满足条件的元素。
limit 限定stram中元素的数量。满足了limit数量以后,stream中以后的迭代终止,类似与短路操作。
skip(n) 跳过元素,返回一个扔掉了前n个元素的stream。若stream中元素不足n个,则返回一个空stream。与limit(n)互补
distinct 通过stream中元素的hashCode() 和 equels() 去除重复元素
映射
map 接受Lambda, 将元素转换成其他形式或提取信息。接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap 接受一个函数作为参数,将stream中的每个值都换成另一个stream,然后把所有的stream连成一个stream。
排序
sorted() 自然排序 按照Comparable排序
sorted(Comparator com) 自定义排序 按照comparator排序
归约
T reduce(T identity, BinaryOperator
收集
Optional
内部迭代: 迭代操作由Stream API完成
外部迭代: 自己写Iteriator
三、 并行流与串行流
并行流 就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。Java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API 可以声明性地通过 parallel() 与sequential() 在并行流与顺序流之间进行切换。
相关文章推荐
- Java8新特性Stream API与Lambda表达式详解(2)
- Java8新特性第3章(Stream API)
- Java8新特性第3章(Stream API)
- Java8新特性-008-Stream排序-中间操作
- Java8系列--Java Stream入门篇(什么是Stream)
- Java8新特性学习-函数式编程(Stream/Function/Optional/Consumer)
- 面试必知的java8新特性-stream
- java8_02_stream(一)创建流和中间操作
- JAVA8新特性 函数式编程Lambda
- Java8中Stream使用的一个注意事项
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- Java8新特性Stream API与Lambda表达式详解(1)
- Java8新特性详解
- Java8如何构建一个Stream示例详解
- 挑战Kafka!Redis5.0重量级特性Stream尝鲜
- Java8的十大新特性
- 使用java8新特性 使用stream获取最大值比parallelStream快
- Java8新特性之Lambda表达式
- Stream:java1.8新特性
- Java8新特性——Lambda表达式(一)