问题描述:
在Java中,当你遇到 java.lang.UnsupportedOperationException
这个异常时,通常意味着你尝试在一个不支持该操作的集合上执行了一个操作。在这个具体的例子中,问题很可能出在 toList()
方法的使用上,以及后续对列表的修改。
List<Long> ids=dtos.stream().filter(s->s.getId()!=null).map(BaseModel::getId).toList();
List<Long> deleteIds=exists.stream().map(BaseModel::getId).toList();
//这边报java.lang.UnsupportedOperationException: null
deleteIds.removeAll(ids);
修改为:
List<Long> ids=dtos.stream().filter(s->s.getId()!=null).map(BaseModel::getId).toList(); //.collect(Collectors.toList()才是可删除对象 List<Long> deleteIds=exists.stream().map(BaseModel::getId).collect(Collectors.toList()); deleteIds.removeAll(ids);
原因:
使用的是Java 12或更高版本,并且使用了 Stream.toList()
,你应该改用 Collectors.toList()
来确保得到一个可修改的 ArrayList