【发布时间】:2019-10-03 14:55:56
【问题描述】:
我在 cpp 中使用了这个宏
forn(i,3) cin>>arr[n]; //assume arr initialised earlier
所以我尝试使用 lambda 和 IntStream 在 Java 中实现这一目标
Scanner sc = new Scanner(System.in);
IntStream.range(0, 5).map(i->arr[i]).forEach(e->e=sc.nextInt());
但我知道流不会操纵底层数据结构。所以我可以使用流来实现这一点,还是我必须创建自己的功能接口来做到这一点?谢谢
【问题讨论】:
-
流并不是要取代所有其他类型的迭代,这里的 for 循环将同样易于使用。看起来你想要
for (int i=0; i<5; i++) { arr[i]=sc.nextInt(); } -
流用于对数据集合(流)应用一组操作,它们不一定是 for 循环等流结构的替代品。
-
旁白:
forn(i,3)是如何翻译成IntStream.range(0, 5)的? (如果我没记错的话,界限肯定是不同的。) -
实际上我尝试了一种不同于传统 for 循环的方式。考虑上面给出的宏。
标签: java lambda java-8 java-stream