java.lang.UnsupportedOperationException: null

轻寒發表於2024-10-12

問題描述:

在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

相關文章