ITPub博客

首页 > 应用开发 > Java > java 8 Stream处理

java 8 Stream处理

原创 Java 作者:fengwuying121 时间:2018-01-04 11:26:43 0 删除 编辑

package staticTest;

import java.util.Arrays;
import java.util.Collection;

public class Streams {
 private enum Status {
  OPEN, CLOSED
 };

 private static final class Task {
  private final Status status;
  private final Integer points;

  Task(final Status status, final Integer points) {
   this.status = status;
   this.points = points;
  }

  public Integer getPoints() {
   return points;
  }

  public Status getStatus() {
   return status;
  }

  @Override
  public String toString() {
   return String.format("[%s, %d]", status, points);
  }
 }

 public static void main(String args[]) {
  final Collection<Task> tasks = Arrays.asList(
    new Task(Status.OPEN, 5),
    new Task(Status.OPEN, 13),
    new Task(Status.CLOSED, 8)
    );

  // Calculate total points of all active tasks using sum()
  final long totalPointsOfOpenTasks = tasks.stream().filter(task -> task.getStatus() == Status.OPEN)
    .mapToInt(Task::getPoints).sum();

  System.out.println("Total points: " + totalPointsOfOpenTasks);
 }

}


处理过程

task集合被转化为stream流对像,通过filter过滤数据,只取status为OPEN的。

mapToInt操作通过Task::getPoints这种方式调用每个task实例的getPoints方法把Task的stream转化为Integer的stream。

最后,用sum函数把所有的分数加起来,得到最终的结果。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30180323/viewspace-2149687/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: java 8 forEach测试
请登录后发表评论 登录
全部评论

注册时间:2015-03-27

  • 博文量
    61
  • 访问量
    44775