我正在尝试实现一个函数,该函数返回参数x之前的完美数字列表,我必须使用java函数接口和支持函数样式的类(流、过滤器、地图.)来实现它。
我的函数应该执行以下操作
在最外层的
的结果。
最内部的
是否为n%x。
我最有麻烦的地方是用最里面的过滤器来实现缩减(foldl)。
这是我的代码:
public static List<Integer> generatePerfectList(int x) {
List<Integer> perfectList = new ArrayList<Integer>();
perfectList = IntStream.range(0, x)
// I am also getting an error "Incompatible operand types int and OptionalInt" in the following line
.filter(n -> (n == (IntStream.range(0, n-1).filter(x -> (0 == (n % x))).reduce(Integer::sum))))
.boxed().collect(Collectors.toList());
return perfectList;
}发布于 2021-03-14 06:45:18
尝尝这个。
public static List<Integer> generatePerfectList(int x) {
return IntStream.range(1, x)
.filter(n -> n == IntStream.range(1, n).filter(i -> 0 == n % i).sum())
.boxed().collect(Collectors.toList());
}和
System.out.println(generatePerfectList(1000));产出:
[6, 28, 496]https://stackoverflow.com/questions/66620360
复制相似问题