如何使用java 8流从我的hashmap获取值

时间:2016-03-08 06:35:51

标签: java java-8 java-stream

我的hashmap看起来像这样:

Map<String, ImageRecipeMap> contentIdToImageIdsMap = new HashMap<>();

我的ImageRecipeMap对象如下所示:

public class ImageRecipeMap {

    private ContentType contentType;

    private List<String> imageIds;

    public List<String> getImageIds() {
        return imageIds;
    }

    public void setImageIds(List<String> imageIds) {
        this.imageIds = imageIds;
    }

    ...
}

我想获取imageIds的所有列表,并使用java 8流创建一个完整的imageIds列表。这是我到目前为止所做的,但我的收集似乎有一个编译错误:

List<String> total = contentIdToImageIdsMap.values().stream()
           .map(value -> value.getImageIds())
           .collect(Collectors.toList());

1 个答案:

答案 0 :(得分:4)

您的解决方案返回List<List<String>>。使用.flatMap()将它们压扁就可以了。

    List<String> total = contentIdToImageIdsMap.values().stream()
           .flatMap(value -> value.getImageIds().stream())
           .collect(Collectors.toList());

.flatMap()Stream<List<String>>更改为Stream<String>