Java 8中的Lambda表达式
发布时间:2020-12-14 05:24:56 所属栏目:Java 来源:网络整理
导读:我想使用lambda表达式而不是for循环生成数字列表. 所以让我们想要生成一个100以下的所有三角形数字的列表.三角数字是以下公式的数字:(n * n n)/ 2 这样做最好的方法是什么? 目前我有这个: Stream.iterate(1,n - n + 1).limit(100) .map(n - (n * n + n) /
我想使用lambda表达式而不是for循环生成数字列表.
所以让我们想要生成一个100以下的所有三角形数字的列表.三角数字是以下公式的数字:(n * n n)/ 2 这样做最好的方法是什么? Stream.iterate(1,n -> n + 1).limit(100) .map(n -> (n * n + n) / 2) .filter(a -> a < 100) .map(a -> a + "") .collect(Collectors.joining(",","Numbers: ",".")); 但这似乎不必要地过度的计算量.我迭代n超过1到100(因为假设我不知道n的最大值是多少),那么我映射该列表的三角数字函数,然后我检查哪些数字在100以下是否有更有效的方式在这样做? 编辑: ArrayList<Integer> triangles = new ArrayList<>(); for (int n=1;true;n++) { int num = (n*n+n)/2; if (num>100) break; triangles.add(num); } 一旦三角形数字超过100,那就停止,这是非常有效的;如何在lambda表达式中保留这个效率? 解决方法
一般情况下,您正在寻找的是一段时间.
不幸的是,它没有Java 8流中的默认实现. 见 question about take-while. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 弹性搜索 – 与java Web应用程序集成
- java – Clojure中-toString与.toString的区别
- 使用volatile for setjmp / longjmp的性能开销
- Android截屏代码
- java – 使用Spring AOP的BeanNotOfRequiredTypeException
- 可视化swing界面编辑--转载
- java实现的连接oracle/mysql数据库功能简单示例【附oracle+
- java – 尝试解析json时的NoSuchFieldError“ADJUST_DATES_
- Java中的纳秒时间,不使用java.util.Date
- 如何最好地在java中存储游戏配置变量