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

在Java中转换Lambda表达式

阎声
2023-03-14

我还在尝试理解lambda表达式。

我想将这个lambda表达式转换为“普通”表达式:

float evaluate = Arrays.stream(queries).mapToInt(query -> 
(query.getCategory().equals(this.classify(this.retrieve(query, database, featureType), k)) ? 1 : 0)).sum();

你们有主意吗?

提前谢谢。

共有2个答案

耿建弼
2023-03-14
With some assumptions..

float evaluate = 0;
    int sum = 0;
    for(Query query : queries) {
        int categoryTypeFromDb = this.classify(this.retrieve(query, database, featureType), k) ? 1 : 0;
        if(query.getCategory().equals(categoryTypeFromDb)) {
            sum += categoryTypeFromDb;
        }
    }
    evaluate = sum;
禄星腾
2023-03-14

根据需要修改以下代码

示例中的Lambda表达式“是”ToIntFunction(例如,在Eclipse中,您甚至可以通过按Ctrl 1/Convert…)在两个版本之间切换)

    String[] queries = null;
    float evaluate = Arrays.stream(queries).mapToInt(
        new ToIntFunction<String>() {
            @Override
            public int applyAsInt(String query) {
                return 0;
            }
        }
    ).sum();

与相同

float evaluate = Arrays.stream(queries).mapToInt(query -> 0).sum();
 类似资料:
  • 问题内容: 尝试转换这段代码以摆脱lambda表达式,以便能够在Java 7中工作 我环顾四周,但也许我只是不正确地理解它。 问题答案: 在Java 8中,lambda表达式替代了实现功能接口的匿名内部类。看起来您在这里使用的是,因为表达式是。 该接口是Java 8中引入的,因此您需要自己重新创建它。您将无法创建或方法,因此只需保留功能性接口方法即可。 然后,将lambda表达式替换为匿名类声明。

  • 问题内容: 我正在尝试使用Java中的lambda表达式创建一个示例,而我正在使用官方JDK8。我的示例已成功运行。但是当我尝试检查编译器如何将lambda表达式转换为字节码时,这让我有些困惑。以下是我的示例代码:- 在这个文章,他们关于如何编译的lambda表达式转换成字节码讨论。根据该文档,lambda表达式转换为方法以及lambda表达式声明的位置,具有lambda 方法的引用。以下示例在文

  • 问题内容: 我正在浏览Java源代码中的接口,并遇到了以下这段代码: 从方法声明中,我知道这是一个通用方法,该方法返回一个Comparator类型,该Comparator类型可以从传递给它的映射条目中推断出来,也可以在该方法中明确提供。 真正让我失望的是返回值。似乎lambda表达式 被显式转换为。这是正确的吗? 我还注意到,表观演员包括。我之前从未见过将接口与类组合在一起的类型,但是在编译器中它

  • 我在查看接口的Java源代码时,遇到了以下代码片段: 从方法声明中,我得到这是一个通用方法,它返回一种类型的比较器,这种比较器要么是从传递给它的映射条目中推断出来的,要么是在方法中显式提供的。 真正让我恼火的是返回值。看来λ表达式 显式转换为 ?有人能澄清这一切吗?

  • 我在JavaFX上有一个应用程序。在这个应用程序中,我需要实现专栏的编辑器。在旧版本中,该代码运行良好: 但是当我试图用lambda重写代码时 我得到一个错误:错误:java:不兼容的类型:lambda表达式中的不兼容参数类型告诉我如何指定lambda表达式的类型?

  • 问题内容: Java8中添加了Lambda表达式。我想理解为什么这很重要。对于尚未接触函数式编程习惯的Java程序员意味着什么?这是否意味着我可以编写出性能更好的代码或可大规模扩展的代码,还是只会使代码的详细程度降低。或全部。 问题答案: Oracle已经提供了有关该主题的教程。它列出了几个很好的用例。 在找到链接之前,我要说的是lambda表达式可让您将“函数”传递给代码。因此,您可以更轻松地编