创建一个列表,其值从1到'n',没有for循环

时间:2018-01-06 21:53:32

标签: 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
                            .map(x -> x * x)           //Squared  
                            .reduce(0, (x,y) -> x + y);//Sum 
}

如果没有 for-loop ,我想做的是这样的事情:

List<Integer> list = Arrays.asList(1,...,n);

作为Haskell中的一个示例,您可以使用“ .. ”创建一个从1到n的列表:

listToN :: Int -> [Int]
listToN n = [1 .. n]

如果[1,2,3,4,5,6,7]

,则返回n == 7

1 个答案:

答案 0 :(得分:3)

好像您正在寻找IntStream.rangeClosed(1,7)

如果有专门的方法(通过reduce完全按照你的方式执行),顺便说一下,不要使用reduce

IntStream.range(1, n)
            .filter(x -> x % 2 == 0)
            .map(x -> x * x)
            .sum();