Java 创建一个值为1到'的列表;n';没有for循环
我有一个函数,它接收一个整数作为参数。它的目的是返回列表中所有偶数平方的总和 例如,如果n=7,则返回56Java 创建一个值为1到'的列表;n';没有for循环,java,list,function,java-8,Java,List,Function,Java 8,我有一个函数,它接收一个整数作为参数。它的目的是返回列表中所有偶数平方的总和 例如,如果n=7,则返回56 private static int myFunction (int n) { List<Integer> list = Arrays.asList(1,2,3,4,5,6,7); return list.stream().filter( x -> x % 2 == 0) //Even numbers
private static int myFunction (int n) {
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
return list.stream().filter( x -> x % 2 == 0) //Even numbers
.map(x -> x * x) //Squared
.reduce(0, (x,y) -> x + y);//Sum
}
返回:
[1,2,3,4,5,6,7]
如果n==7
似乎您正在查找IntStream.rangeClosed(1,7)
顺便说一句,如果有专门的方法,不要使用reduce
(这正是您通过reduce
所做的)
IntStream.rangeClosed(1,7)
?更简单、更快:IntStream.range(0,(n+1)/2).map(x->4*x*x.sum()
甚至更快:4*IntStream.range(0,(n+1)/2).map(x->x*x.sum()
@Holger:)确实如此
List<Integer> list = Arrays.asList(1,...,n);
listToN :: Int -> [Int]
listToN n = [1 .. n]
IntStream.range(1, n)
.filter(x -> x % 2 == 0)
.map(x -> x * x)
.sum();