Java 8 Stream从Map中提取数据

twe*_*sat 3 java java-8 java-stream

我有一个Map<String,ExtractedData> extractedDatas,我想提取一些数据作为返回结果.我对Stream API很新,我不明白我必须做什么.我试过了

public Map<String,ExtractedData> getExtractedData(String name)
{
    return extractedDatas.entrySet().stream()
            .filter(entry -> entry.getKey().startsWith(name))
            .filter(entry -> entry.getValue().getFieldValue() != null && entry.getValue().getFieldValue() != "")
            .collect(Collectors.toMap(...);
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办Collectors.toMap

Era*_*ran 7

您只需将映射元素的函数传递Stream给输出的键和值Map.

在您的情况下,它只是Map.EntryStream 的元素的关键和价值.

public Map<String,ExtractedData> getExtractedData(String name)
{
    return extractedDatas.entrySet().stream()
            .filter(entry -> entry.getKey().startsWith(name))
            .filter(entry -> entry.getValue().getFieldValue() != null && entry.getValue().getFieldValue() != "")
            .collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
}
Run Code Online (Sandbox Code Playgroud)