实例玩转jdk8的Stream
2018-12-08 12:30
20 查看
Stream的意义
- 对集合(Collection)对象功能进行增强,它专注于对集合对象进行各种非常便利、高效的聚合操作
- 借助于Lambda 表达式,极大的提高编程效率和程序可读性
- 函数式调用,链式调用的充分发挥
- 函数式语言+多核时代综合影响的产物
实例玩转Stream
一、创建一个勾股数流
/** * 创建一个勾股数流 * * @param maxLength 直角三角形斜边最大值 * @return 一个勾股数流 */ public static Stream<int[]> getGGStream(int maxLength) { return IntStream.rangeClosed(5, maxLength) .boxed() .flatMap(c -> IntStream.range(1, c) .mapToObj(a -> new double[]{a, Math.sqrt(c * c - a * a), c}) .filter(t -> t[1] % 1 == 0 && t[0] < t[1])) .map(d -> new int[]{(int) d[0], (int) d[1], (int) d[2]}); }
二、创建一个斐波那契数列流
/** * 创建一个斐波那契数列流 * @return 斐波那契数列流 */ public static Stream<Integer> getFiboStream() { return Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]}) .map(t -> t[0]); }
三、创建一个标准质数流
/** * 创建一个标准质数流 * @return 标准质数流 */ public static Stream<Integer> getPrimeStream() { return Stream.iterate(2, v -> v == 2 ? ++v : v + 2) .filter(MyStream::isPrime); } /** * 判断指定数是否为质数 * @param candidate 待判断的数 * @return 判断数为质数返回true, 否则返回false */ public static boolean isPrime(int candidate) { return IntStream.rangeClosed(2, (int) Math.sqrt(candidate)) .filter(p -> p == 2 || p % 2 == 1) .noneMatch(p -> candidate % p == 0); }
相关文章推荐
- jdk8 stream应用实例
- 玩转Excel系列-SUMIFS函数使用及实例
- 玩转CSS CSS精彩实例教程(一)
- 十分钟玩转 jQuery、实例大全
- 用实例理解Storm的Stream概念
- getResourceAsStream和getResource的用法及Demo实例
- Storm处理Stream Join的简单实例
- JDK1.8 集合操作工具Stream的实例
- PyQt之玩转signal(信号)与slot(槽)一:介绍及简单实例
- Qt:QXMLStreamReader、QXMLStreamWriter,读写XML文件实例
- JDK8 Stream 从入门到装逼(三)
- Java采用setAsciiStream方法检索数据库指定内容实例解析
- java8实现列表去重,java8的stream 和lambda的使用实例
- getResourceAsStream和getResource的用法及Demo实例
- 实例操作 教你玩转SQL Server存储过程
- jdk8 Stream map和flatMap区别
- KingDZ 变菜鸟,每日一个C#小实例之---玩转鼠标
- JDK8新特性-Stream
- JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序
- JDK8新特性(3):Stream API补充介绍