当您尝试流式处理数组列表并基于返回布尔值的方法调用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)));