編集: ここで解決策を見つけました: http://www.dreamsyssoft.com/java-8-lambda-tutorial/map-reduce-tutorial.php
私はこのチュートリアルに従っています:
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html
合計関数と平均関数を使用している部分に到達すると、次のエラーが発生します。
UserAverageTest.java:68: error: cannot find symbol
double average = users.parallelStream().filter(u -> u.age > 0).map(u -> u.age).average().getAsDouble();
^
symbol: method average()
location: interface Stream<Double>
sum を呼び出すときに同じエラーが発生します。何らかの理由で、DoubleStream クラスではなく Stream を使用しているようです。チュートリアルでリンクされているラムダを有効にした最新の jdk を使用しています。
誰かがこの問題にも遭遇し、解決できましたか?
問題を再現する簡単な例を次に示します。
class User {
double age;
public User(double age) { this.age = age; }
double getAge() { return age; }
}
public static void main(String[] args) throws Exception {
List<User> users = Arrays.asList(new User(10), new User(20), new User(30));
double average = users.parallelStream()
.filter(u -> u.age > 0)
.map(u -> u.age)
.average()
.getAsDouble();
}