Sim*_*ang 3 java lambda java-8
我想在Java 8中使用聚合操作找到几个矩形的平均面积.
Rectangle[] rects = new Rectangle[]{
new Rectangle(5, 10, 20, 30),
new Rectangle(10, 20, 30, 40),
new Rectangle(20, 30, 5, 15)
};
System.out.println("Average area: "
+ Arrays.asList(rects)
.parallelStream()
.map((RectangularShape r) -> (r.getWidth() * r.getHeight()))
.collect(Collectors.averagingDouble(o -> o)));
// I don't like this "o -> o"
System.out.println("Expected: 625");
Run Code Online (Sandbox Code Playgroud)
但是,我找到了一种愚蠢的o -> o要求averagingDouble.是否有更直观的替代这个lambda(甚至可能是某个地方的股票身份lambda)?
没必要:
System.out.println("Average area: "
+ Arrays.asList(rects)
.parallelStream()
.mapToDouble((RectangularShape r) -> (r.getWidth() * r.getHeight()))
.average();
Run Code Online (Sandbox Code Playgroud)
(另外,你可能会觉得Stream.of(rects).parallel())更喜欢Arrays.asList(rects).parallelStream().)
| 归档时间: |
|
| 查看次数: |
2562 次 |
| 最近记录: |