当前位置: 首页 > 知识库问答 >
问题:

从IntStream对象中的mapToObj函数返回可调用的列表

舒赞
2023-03-14

我需要用execute one方法创建一个可调用列表,其中每个have int参数的范围为[1..99]。我最初的想法是:

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识别为可调用的

   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表达式?

共有3个答案

叶越
2023-03-14

您可以通过以下方式执行此操作:

public double calculateResult(int value) {
    return 0.0d;
}

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

我在这里应用的更改是,我显式地键入mapToObj调用,因为您希望将流映射到流

我仍在试图弄清楚为什么需要显式类型。

燕英奕
2023-03-14

插入强制转换,您的解决方案将编译:

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

你在找这样的东西吗?

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();
}
 类似资料:
  • 问题内容: 我在从Node.js中的回调函数返回值时遇到了小麻烦,我将尝试尽可能轻松地解释我的情况。考虑一下我有一个片段,它包含URL,并命中该URL,并提供输出: 我试图将其包装在函数中并返回如下值: 因为在我的Node.js代码中,我有很多语句将决定value的值,例如: 关键是a内的所有语句将保持相同,除了的值。因此,绝对需要将这些通用代码放入函数中。我尝试了同样的方法,但是in总是会回报我

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • 我需要将json对象从匿名函数加载到变量实例。 本例中的实例未定义。 我敢肯定,解决方法很简单,但是新手在节点上找不到答案…:(

  • 问题内容: 我有这个代码。 每个值的名称产生,我希望协会指定的具有指定在。 为了支持 类 类 现在的问题是,是否有可能返回一个排序从直接? (没有先前创建的内容,后来又放置了) 问题答案: 这对您有用吗? 我想我终于明白了。我不得不重新整理方法之类的。 更新。我添加了排序并以

  • 问题内容: 我有一个发送Ajax命令的系统,该命令返回一个带有功能的脚本块。将此数据正确插入DIV后,我希望能够调用此函数来执行所需的操作。 这可能吗? 问题答案: 我想以这种形式正确解释您的问题:“好的,我已经用完所有的Ajax东西了;我只想知道从那时起任何时候都可以调用插入到DIV中的JavaScript函数吗? ,也就是说,我不想在上下文中将其称为“回调返回”。 好的,如果您的意思是这样,那

  • 我有一个方法,它接受一个内部有的对象: MatchData k可以是null,有时k.getWatchListDetail()也可以是null。 我需要检查两种情况。首先,如果它能抛出NPE。 上面的实现可以做到这一点,但我尝试使用或带有链接的流,所以我可以在一行链接中完成。