当您尝试流式处理数组列表并基于返回布尔值的方法调用setter时,请帮助我解决此问题。

写为for循环,看起来像这样:-

for (final PersonDto person : personList) {
    person.setUserCanEdit(userHasWriteRole(person));
}

private Boolean userHasWriteRole(final PersonDto person) {
        return getUserRoles().contains(getReadRole());
    }

我尝试了以下几种方法,但都没有成功
final List<PersonDto> results = personList.stream().filter(a -> a.setUserCanEdit(this::userHasWriteRole)).collect(Collectors.toList());


...但是它抱怨
此表达式的目标类型必须是功能接口

最佳答案

由于要更新数组列表中的对象,因此可以使用forEach

personList.forEach(person ->person.setUserCanEdit(userHasWriteRole(person)));

10-01 05:45