安徽省通信建设管理局网站,网站开发和app的区别,电子商务有哪些职业,做电影售票网站的难点几种编程语言#xff08;例如Ruby或Python等#xff09;提供yield命令。 在内存消耗方面#xff0c;Yield提供了一种有效的方式#xff0c;可以通过按需生成值来创建一系列值。 有关Python产量的更多信息。 让我们考虑一个需要大量安全随机整数的类或方法。 经典方法是创建… 几种编程语言例如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.limitRANDOM_INTS.sorted。toArray触发RANDOM_INTS值的生成然后将其排序并存储为数组。 翻译自: https://www.javacodegeeks.com/2014/08/java-yield-like-using-stream-api.html