java8 入门脚本之家_Java 8中的Lambda表达式
我想使用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以下是否有更有效的方式在這樣做?
另外:我可以使用Stream的iterate函數生成三角形數字,而不是使用iterate,limit,然后映射?
編輯:
所以這里的要點是:一旦三角形數字之一超過100,一個數字的計算如何停止?
通常我會這樣寫:
ArrayList triangles = new ArrayList<>();
for (int n=1;true;n++) {
int num = (n*n+n)/2;
if (num>100) break;
triangles.add(num);
}
一旦三角形數字超過100,那就停止,這是非常有效的;如何在lambda表達式中保留這個效率?
總結
以上是生活随笔為你收集整理的java8 入门脚本之家_Java 8中的Lambda表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙系统开发资金,华为终于动手,将拿出超
- 下一篇: hdu2457 Trie图+dp