Java 声纳提示到;重构代码,以便使用流管道;

Java 声纳提示到;重构代码,以便使用流管道;,java,java-8,java-stream,sonarlint,functional-interface,Java,Java 8,Java Stream,Sonarlint,Functional Interface,我使用基于流的方法将我的列表映射为列表。以下代码用于流 listmailvariable=(List)processVariables.get(“邮件映射”); 1 |列表detList=mailVariable 2 |流() 3.平面地图(getEntry) 4 |过滤器(isEmpty) 5 |.reduce(新的ArrayList(),AccumerateToCustomObject,合并器); 我正在使用Sonarint分析我的代码,在第2行和第3行出现了以下错误 重构此代码,以便使用

我使用基于流的方法将我的
列表
映射为
列表
。以下代码用于流

listmailvariable=(List)processVariables.get(“邮件映射”);
1 |列表detList=mailVariable
2 |流()
3.平面地图(getEntry)
4 |过滤器(isEmpty)
5 |.reduce(新的ArrayList(),AccumerateToCustomObject,合并器);
我正在使用Sonarint分析我的代码,在第2行和第3行出现了以下错误

重构此代码,以便使用流管道。鱿鱼:S3958

事实上,我正在使用stream并按照建议从终端操作中返回值。我做错什么了吗?。有谁能建议正确的方法来写这段代码吗

//以下是流程中使用的功能接口impls
函数getEntry=data->data.entrySet().stream();
谓词isEmpty=data->data.getValue()!=无效的
|| !data.getValue().isEmpty()文件
|| !data.getValue()等于(“”);
二进制运算符组合器=(a,b)->{
ArrayList acc=b;
acc.addAll(a);
返回acc;
};
双功能累加器CustomObject=(finalList,eachset)->{
/*还原过程发生
正在生成CustomObject。。
*/
回归终结者;
};

更新::我找到了解决此问题的方法,将map reduce操作拆分为map和collect操作,如下所示。那个特定的lint错误现在出现了

List detList=mailVariable
.stream()
.flatMap(getEntry)
.filter(isEmpty)
.map(mapToObj)
.filter(对象::非空)
.collect(Collectors.toList());
函数mapToObj=eachSet->{
字符串tagString=null;
字符串tagValue=eachSet.getValue();
试一试{
tagString=MapVariables.valueOf(eachSet.getKey()).getTag();
}捕获(例外e){
tagString=eachSet.getKey();
}
if(eventTags.contains(tagString)){
AlertEventLogDetTO实体=新的AlertEventLogDetTO();
entity.setAeldAelId(alertEventLog.getAelId());
entity.setAelTag(标记字符串);
实体。setAelValue(tagValue);
返回实体;
}
返回null;
};

什么是SQID?或者来自声纳的完整信息?这发生在哪个版本的声纳上?你试过4.15吗?原因=,如果用
映射(…).collect(…)
替换
reduce
会怎么样。我就是这么做的,而且成功了。感谢您的帮助@Naman
修复我们的索引