此语言级别不支持Lambda表达式

时间:2015-11-26 12:56:58

标签: java intellij-idea apache-spark

我有一个使用Spark的Java类。我需要从JavaRDD中过滤掉标题。这就是我想要这样做的方式。

String first = data.first();
JavaRDD<String> filteredData = data.filter((String s) -> {return !s.contains(first);});

但是,无法编译此代码data.filter((String s) -> {return !s.contains(first);})。 IntelliJ IDE说“在此语言级别不支持Lambda表达式”。

1 个答案:

答案 0 :(得分:4)

你可以在Java 7上使用lambdas,但它有点涉及 - 你必须使用像Retrolambda这样的东西。

你也可以在没有lambdas的情况下做同样的事情。 Lambda可以通过匿名类轻松表示,但它更详细。

final String first = data.first();
JavaRDD<String> filteredData = data.filter(new Function<String, Boolean>() {
  @Override public Boolean call(String s) {
    return !s.contains(first);
  }
});