問題描述:
在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