此语言级别不支持Lambda表达式 [英] Lambda expressions are not supported at this language level
问题描述
我有一个使用Spark的Java类。我需要从JavaRDD中过滤掉标题。这就是我想要这样做的方式。
I have a Java class that uses Spark. I need to filter out the header from JavaRDD. This is how I want to do this.
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表达式。
However, this code data.filter((String s) -> {return !s.contains(first);})
cannot be compiled. IntelliJ IDE says "Lambda expressions are not supported at this language level".
推荐答案
你可以在Java 7上使用lambdas,但它有点涉及 - 你必须使用类似 Retrolambda 。
You can use lambdas on Java 7, but it is a bit involved — you have to use something like Retrolambda.
你也可以在没有lambdas的情况下做同样的事情。 Lambda可以通过匿名类轻松表示,但它更冗长。
Also you can do the same thing without lambdas. Lambdas can be easily represented via annonymous classes, however it is a lot more verbose.
final String first = data.first();
JavaRDD<String> filteredData = data.filter(new Function<String, Boolean>() {
@Override public Boolean call(String s) {
return !s.contains(first);
}
});
这篇关于此语言级别不支持Lambda表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!