java - 用 Java 中的流 API 调用替换 for-each 循环

标签 java collections lambda java-stream

有这段代码:

public Map<Job, Collection<JobTransform>> getPartitioning() {
    Map<Job, Collection<JobTransform>> partitioning = new IdentityHashMap<>();
    for (JobTransform jobTransform : content) {
        Job job = jobTransform.getJob();
        Collection<JobTransform> collection = partitioning.get(job);
        if (collection == null) {
           collection = new LinkedList<>();
           partitioning.put(job, collection);
        }
        collection.add(jobTransform);
    }
    return partitioning;
}

并且“content”是实现此方法的类的构造函数参数,如何使用 Java 中的 Stream API 将 for-each 循环转换为代码?现在我只有

content.stream().map(JobTransform::getJob)

而且我不知道如何进一步利用每项工作。我使用的 API 有误吗?请帮助我改进我的代码!

最佳答案

content.stream().collect(Collectors.groupingBy(JobTransform::getJob, IdentityHashMap::new, Collectors.toCollection(LinkedList::new)));

这将执行与您的非流代码完全相同的操作。

关于java - 用 Java 中的流 API 调用替换 for-each 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123036/

相关文章:

c# - 在列表上创建哈希值?

java - 如果我们在父列表中添加元素,为什么 JDK 会向 UnmodifyableList 添加一个元素

c++ - 为什么静态 lambda 成员的封闭类型不完整?

c++ - 我如何在 C++11 中解决 SICP 2.4

c# - C# MVC 4 中带有 Linq 的 Where 子句

java - Spring集成中使用Hibernate触发事件

java - 如何将 Double 值从一个 ActionListener 方法引入到另一个方法中以执行计算? java

java - 使用java流获取arrayList中最小大小列表的索引

java - 为两个不在java中使用继承的类创建通用方法

java - 在 spring jdbctemplate 中传递不带单引号的字符串