使用Stream API的类Java产量
生活随笔
收集整理的這篇文章主要介紹了
使用Stream API的类Java产量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
幾種編程語言(例如Ruby或Python等)提供yield命令。 在內存消耗方面,Yield提供了一種有效的方式,可以通過按需生成值來創建一系列值。 有關Python產量的更多信息。
讓我們考慮一個需要大量安全隨機整數的類或方法。 經典方法是創建此類整數的數組或集合。 與這種方法相比,良率提供了兩個主要優點:
- 產量不需要事先知道序列的長度。
- yield不需要將所有值存儲在內存中。
幸運的是,得益于Stream API ,yield功能可以在Java 8中使用:
import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Date; import java.util.function.Supplier; import java.util.stream.Stream;public class Yield {private static final Integer RANDOM_INTS = 10;public static void main(String[] args) {try (Stream randomInt = generateRandomIntStream()){Object[] randomInts = randomInt.limit(RANDOM_INTS).sorted().toArray();for (int i = 0; i < randomInts.length;i++)System.out.println(randomInts[i]);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}private static Stream generateRandomIntStream()throws NoSuchAlgorithmException{return Stream.generate(new Supplier() {final SecureRandom random = SecureRandom.getInstance("SHA1PRNG");boolean init = false;int numGenerated = 0;@Overridepublic Integer get() {if (!init){random.setSeed(new Date().getTime());init = true;System.out.println("Seeding");}final int nextInt = random.nextInt();System.out.println("Generated random "+ numGenerated+++ ": " + nextInt);return nextInt;}});}}以下是執行提供的代碼段后的輸出:
Seeding Generated random 0: -896358073 Generated random 1: -1268521873 Generated random 2: 9627917 Generated random 3: -2106415441 Generated random 4: 935583477 Generated random 5: -1132421439 Generated random 6: -1324474601 Generated random 7: -1768257192 Generated random 8: -566921081 Generated random 9: 425501046 -2106415441 -1768257192 -1324474601 -1268521873 -1132421439 -896358073 -566921081 9627917 425501046 935583477很容易看出, 供應商僅被實例化。 當然,我們可以利用所有Stream API功能,例如limit()和sorted()。
行randomInt.limit(RANDOM_INTS).sorted()。toArray()觸發RANDOM_INTS值的生成,然后將其排序并存儲為數組。
翻譯自: https://www.javacodegeeks.com/2014/08/java-yield-like-using-stream-api.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用Stream API的类Java产量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建自己的Java批注
- 下一篇: 公司融资abcd轮啥意思?