gpt4 book ai didi

java - 从 IntStream 对象中的 mapToObj 函数返回 Callable 列表

转载 作者:行者123 更新时间:2023-11-29 05:25:53 25 4
gpt4 key购买 nike

我需要创建 Callable 列表,每个 Callable 都具有 [1..99) 范围内的 int 参数并执行一个方法。我最初的想法是:

List<Callable<Double>> list = new ArrayList<>(100);
IntStream.range(1, 99).forEach(i -> list.add(() -> calculateResult(i)));

下一个想法是收集要列出的项目:

List<Callable<Double>> list = IntStream.range(1, 99).mapToObj(value -> (() -> calculateResult(value))).collect(Collectors.toList());

它看起来不错,但在 mapToObj 函数中无法将内部 lambda 识别为 Callable 。如果我像这样使用典型的内部类,它会起作用:

   List<Callable<Double>> list = IntStream.range(1, 99).mapToObj(new IntFunction<Callable<Double>>() {
@Override
public Callable<Double> apply(int value) {
return () -> calculateResult(value);
}
}).collect(Collectors.toList());

有什么方法可以将返回类型传递给 lambda 表达式吗?

最佳答案

您正在寻找这样的东西吗?

public static void main(String[] args) {
List<Callable<Double>> list = IntStream.range(1, 99)
.<Callable<Double>>mapToObj(value -> callableFactory(value))
.collect(Collectors.toList());
}

public static Callable<Double> callableFactory(int value) {
return new Callable<Double>() {
@Override public Double call() { return calculateResult(value); }
};
}

public static Double calculateResult(int value) {
return Math.random();
}

关于java - 从 IntStream 对象中的 mapToObj 函数返回 Callable<Double> 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22712153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com