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

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

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

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

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

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

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