Java StreamAPI 的使用

版权声明:如果喜欢的话,可以撩我哟,此处没有联系方式,想要就自己找哈。 https://blog.csdn.net/qq_39384184/article/details/85245243

StreamAPI 能让代码更加简洁,极大地简化了集合框架的处理。

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

enum Status {
    OPEN, CLOSED
}

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 class StreamAPIDemo {
    public static void main(String[] args) {
        Collection<Task> tasks = Arrays.asList(
                new Task(Status.OPEN, 5),
                new Task(Status.OPEN, 13),
                new Task(Status.CLOSED, 8));
        int sum = 0;
        for (Task t : tasks) {
            if (t.getStatus() == Status.OPEN) {
                sum += t.getPoints();
            }
        }
        System.out.println("for 循环统计状态为 Open 的任务总分为:" + sum);

        int totalPointsOfOpenTasks = tasks.stream()
                .filter(t -> t.getStatus() == Status.OPEN)
                .mapToInt(Task::getPoints).sum();

        System.out.println("Stream 流方式统计状态为 Open 的任务总分为:"
                + totalPointsOfOpenTasks);

        int totalPoints = tasks.stream()
                .parallel()
                .map(Task::getPoints)
                .reduce(0, Integer::sum);

        System.out.println("所有任务总分为: " + totalPoints);

        Map<Status, List<Task>> map = tasks.stream()
                .collect(Collectors.groupingBy(Task::getStatus));
        System.out.println(map);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39384184/article/details/85245243