[英]Spark example Java 7 to Java 8
I am reading Apache Spark examples, which are written in Java 7. For example, this code: 我正在阅读用Java 7编写的Apache Spark示例。例如,此代码:
public final class JavaKMeans {
private static class ParsePoint implements Function<String, Vector> {
private static final Pattern SPACE = Pattern.compile(" ");
@Override
public Vector call(String line) {
String[] tok = SPACE.split(line);
double[] point = new double[tok.length];
for (int i = 0; i < tok.length; ++i) {
point[i] = Double.parseDouble(tok[i]);
}
return Vectors.dense(point);
}
}
...
JavaRDD<Vector> points = lines.map(new ParsePoint());
...
}
How this call method can be rewritten using Java 8? 如何使用Java 8重写此调用方法?
You could refactor it slightly like below (not tested): 您可以按如下所示对其进行重构(未测试):
public final class JavaKMeans {
private static final Pattern SPACE = Pattern.compile(" ");
private Vector call(String line) {
double[] point = SPACE.splitAsStream(line)
.mapToDouble(Double::parseDouble)
.toArray();
return Vectors.dense(point);
}
...
JavaRDD<Vector> points = lines.map(this::call);
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.