首页 > 应用开发 > Java > java 8 Stream处理
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/ ,如需转载,请注明出处,否则将追究法律责任。