我有一个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(...);
}
我需要在Collectors.toMap
中添加什么内容?
答案 0 :(得分:7)
您只需将映射Stream
元素的函数传递给输出Map
的键和值。
在您的情况下,它只是流的Map.Entry
元素的关键和值。
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));
}
答案 1 :(得分:1)
Map
:,你可以做的有点不同
extractedDatas
.entrySet()
.removeIf(entry ->
!(entry.getKey().startsWith(name) ||
entry.getValue().getFieldValue() != null && entry.getValue().getFieldValue() != "")
)
);