java - 在流式传输另一个列表的同时将数据添加到列表中

标签 java java-8 java-stream collectors

假设我们有一些实体,每个实体都有一个可搜索字段和类型的列表。是否有更好的(阅读更有效的方法)为每种不同类型的实体映射列表中的这些字段。

目前我正在做的是:

final Collection<IndexedField> indexedFields = new ArrayList<>();
for (String type : types) {
    final Class<? extends IndexedEntity> targetClass = indexedEntities.getClassByType(type);
    indexedFields.addAll(indexedEntities.getSearchFieldsFor(targetClass));
}

这可行,但是有更好的方法来实现这一点吗?也许有流 API 的东西。

最佳答案

如果我理解正确的话:

 types.stream()
     .map(indexedEntities::getClassByType)
     .flatmap(x -> indexedEntities.getSearchFieldsFor(x).stream())
     .collect(Collectors.toList());

关于java - 在流式传输另一个列表的同时将数据添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46489251/

相关文章:

java - ThrowableCaptor 可在 Eclipse 中运行,但不能在 Netbeans 中运行

java - 生成一个包含整数 (0, 1, -1, 2, -2, 3, -3, ...) 的无限 Stream<Integer>

java - 为什么 StringBuilder::append 是 BiConsumer<StringBuilder, String>?

java - 是否可以使用 Gradle 5 为 Java 6 编译和测试 Groovy 源文件?

java - 有关 RSS 源的查询 - 我的服务器中的数据加载

java - 哪些用例使临时 JMS 队列成为比持久队列更好的选择?

java - 使用 varargs 参数调用重载方法时的 Nashorn 错误

java - 使用 Java 8 流迭代对象属性

java - 使用 Java 8 从 "Map<String, Collection<String>>"到 "Map<String, List<String>>"

java - 同步块(synchronized block)的末尾是否需要 notifyAll()?