来自Java流的返回值

来自Java流的返回值,java,java-8,java-stream,Java,Java 8,Java Stream,我正在学习流。我有一个常规的for循环,我想把它转换成stream Map<String, String> myMap = new HashMap<>(); for (Response response : responses) { if (!myMap.isEmpty()) { return myMap; } // some code related to response object if(some cond

我正在学习流。我有一个常规的for循环,我想把它转换成stream

Map<String, String> myMap = new HashMap<>();

for (Response response : responses) {

    if (!myMap.isEmpty()) {
        return myMap;
    }

 // some code related to response object
    
    if(some condition){
        myMap.put(key, value);
    }
//key and value is not property of response and coming from another object

}//end for
Map myMap=newhashmap();
对于(响应:响应){
如果(!myMap.isEmpty()){
返回myMap;
}
//一些与响应对象相关的代码
如果(某些条件){
myMap.put(键、值);
}
//键和值不是响应的属性,并且来自另一个对象
}//结束
这只是一段伪代码,它的内容远不止所示。我正在努力从流中返回如上所示的映射,这也是我返回代码所在方法的类型。
我们如何做到这一点?

我想你想要的是

Map myMap=responses.stream()
.filter(r->r.value!=null)
.collect(toMap(r->r.key,r->r.value));//我希望关键和价值是
//响应的性质,
//从你的代码看不清楚

(顺便说一句,这不是您的代码实际执行的操作。您的代码只将具有非空值的第一个响应存储到map中。流中的等效值是
.limit(1)
filter()
之后)

为什么检查
if(!myMap.isEmpty())
在循环中?您尝试了哪些收集器?你能在流媒体上显示你的尝试吗?看起来像
returnmymap
应该在第二个if块中(第一个块消失)@f1sh如果映射不是空的,我想返回并跳过进一步的迭代。当你给出的都是一些我们不应该担心的“伪代码”时,你希望得到什么样的答案?