Java 创建一个值为1到'的列表;n';没有for循环

Java 创建一个值为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

我有一个函数,它接收一个整数作为参数。它的目的是返回列表中所有偶数平方的总和

例如,如果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
                            .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();