【发布时间】:2014-06-24 14:26:33
【问题描述】:
我正在尝试获取一个数字列表,过滤掉偶数,然后将这些偶数平方,以便原始列表中的偶数平方。这是我的代码:
ArrayList<Long> nums2 = new ArrayList<Long>();
for(long i = 0; i < 100000; i++)
nums2.add(i);
nums2.stream().filter(p -> p%2 == 0).forEach(p -> p = (long)Math.pow(p, 2));
尝试了其他几件事,但这是我目前所处的位置
【问题讨论】:
-
你的逻辑看起来不错。现在您需要在另一个集合中检索结果。
-
试图让它影响同一个集合
-
@LuiggiMendoza 只是好奇,
p -> p = (long)Math.pow(p, 2)是否没有效果,因为变量引用将按值传递,所以重新分配不会有效果?我对流没有太多经验,所以我很可能在这方面是错误的。我想象 lambda 大致相当于void method(Long p) { p = (long)Math.pow(p, 2);}。对吗? -
@user3580294 我只是说逻辑看起来不错。我从来没有说过任何关于方法的事情。无论如何,请在此处查看:stackoverflow.com/q/14830313/1065197(在测试之前无法提供答案)。
-
@LuiggiMendoza 抱歉,您可能知道。