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

目前我正在做的是:

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());

10-07 16:15