Stream<Task> 类型中的方法 reduce(Task, BinaryOperator<Task>) 不适用于参数 (HashMap<String,Map<String,Object>>
The method reduce(Task, BinaryOperator<Task>) in the type Stream<Task> is not applicable for the arguments (HashMap<String,Map<String,Object>>
我不断收到此错误:Lambda 表达式的签名与功能接口方法 apply(Task, Task) 的签名不匹配。请告诉我如何解决这个问题?
Map<String, Map<String, Object>> tasks = taskService.createTaskQuery()
.processInstanceId(instanceId)
.list()
.stream()
.reduce(new HashMap<String, Map<String, Object>>(), (taskData, task, t3) -> {
taskData.putIfAbsent(task.getId(), taskService.getVariables(task.getId()));
return taskData;
})
.collect(java.util.stream.Collectors.toList());
看来带合并功能的Stream::collect(Collectors.toMap)
比Stream::reduce
更合适:
Map<String, Map<String, Object>> tasks = taskService.createTaskQuery()
.processInstanceId(instanceId)
.list() // List<Task>
.stream() // Stream<Task>
.collect(Collectors.toMap(
Task::getId // String key = task.getId()
task -> taskService.getVariables(task.getId()) // Map<String, Object>
(m1, m2) -> {m1.putAll(m2); return m1; }
));
我不断收到此错误:Lambda 表达式的签名与功能接口方法 apply(Task, Task) 的签名不匹配。请告诉我如何解决这个问题?
Map<String, Map<String, Object>> tasks = taskService.createTaskQuery()
.processInstanceId(instanceId)
.list()
.stream()
.reduce(new HashMap<String, Map<String, Object>>(), (taskData, task, t3) -> {
taskData.putIfAbsent(task.getId(), taskService.getVariables(task.getId()));
return taskData;
})
.collect(java.util.stream.Collectors.toList());
看来带合并功能的Stream::collect(Collectors.toMap)
比Stream::reduce
更合适:
Map<String, Map<String, Object>> tasks = taskService.createTaskQuery()
.processInstanceId(instanceId)
.list() // List<Task>
.stream() // Stream<Task>
.collect(Collectors.toMap(
Task::getId // String key = task.getId()
task -> taskService.getVariables(task.getId()) // Map<String, Object>
(m1, m2) -> {m1.putAll(m2); return m1; }
));