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");
但是,我找到了一种愚蠢的o -> o要求averagingDouble.是否有更直观的替代这个lambda(甚至可能是某个地方的股票身份lambda)?
没必要:
System.out.println("Average area: "
     + Arrays.asList(rects)
       .parallelStream()
       .mapToDouble((RectangularShape r) -> (r.getWidth() * r.getHeight()))
       .average();
(另外,你可能会觉得Stream.of(rects).parallel())更喜欢Arrays.asList(rects).parallelStream().)
| 归档时间: | 
 | 
| 查看次数: | 2562 次 | 
| 最近记录: |