Java8流从地图中提取数据
我有一个Java8流从地图中提取数据,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个Map extracteddata,我想提取一些数据作为返回结果。我对streamapi还很陌生,我不知道我该做什么。我试过了 public Map<String,ExtractedData> getExtractedData(String name) { return extractedDatas.entrySet().stream() .filter(entry -> entry.getKey().startsWith(name))
Map extracteddata
,我想提取一些数据作为返回结果。我对streamapi还很陌生,我不知道我该做什么。我试过了
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(...);
}
publicmap getExtractedData(字符串名称)
{
返回extractedDatas.entrySet().stream()
.filter(entry->entry.getKey().startsWith(name))
.filter(条目->条目.getValue().getFieldValue()!=null&&entry.getValue().getFieldValue()!=“”)
.收集(收集器.托马普(…);
}
我必须在
收集器.toMap
中放入什么?您只需将映射流的元素的函数传递给输出映射的键和值
在您的例子中,它只是流的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));
}
publicmap getExtractedData(字符串名称)
{
返回extractedDatas.entrySet().stream()
.filter(entry->entry.getKey().startsWith(name))
.filter(条目->条目.getValue().getFieldValue()!=null&&entry.getValue().getFieldValue()!=“”)
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
}
如果您可以更改初始的地图,则可以做一些不同的操作:
extractedDatas
.entrySet()
.removeIf(entry ->
!(entry.getKey().startsWith(name) ||
entry.getValue().getFieldValue() != null && entry.getValue().getFieldValue() != "")
)
);
谢谢。我正在尝试使用.collect(Collectors.toMap(entry->entry.getKey(),entry->entry.getValue());
但是在eclipse中,当我键入entry时。
我没有getKey()
也没有getValue()
即使代码在工作。Map.Entry::getKey,Map.Entry::getValue
和Entry->Entry.getKey(),Entry->Entry.getValue()之间有什么区别
?两者都能工作。@tweetysat和tweetysat都是表示函数接口实现的有效方法。第一种是方法引用,第二种是lambda表达式。谢谢,但事实并非如此。