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; }
                ));