2014-10-21 6 views
1

Я читаю примеры Spark, Apache, которые написаны на Java 7. Например, этот код:Спарк пример Java 7 для Java 8

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()); 
    ... 
} 

Как этот метод вызова может быть переписан с использованием Java 8?

+0

Что проблема компиляции и выполнения этого кода на Java 8? Выдает ли компилятор какие-либо предупреждения или ошибки? – Alex

+0

Нет, нет ошибок. Я просто хочу использовать синтаксис Java 8. Можно ли уменьшить количество кода и сделать, например, что-то вроде лямбда-вычислений в Python? – Bob

ответ

2

Вы можете реорганизовать его немного, как показано ниже (не проверено):

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); 
    ... 
} 
Смежные вопросы