有没有办法修改不可修改的集合?

sha*_*lya 3 javafx

我想从我从 FileChooser 获得的不可修改列表中删除元素。但是在尝试这样做时,它会抛出一个 UnsupportedOperationException。任何人都可以建议我从列表中删除/删除内容吗?

小智 5

您可以创建新列表

List<*T*> list = new ArrayList<>(unmodiableList);
Run Code Online (Sandbox Code Playgroud)


sma*_*c89 1

我猜您调用了FileChooser.showOpenMultipleDialog(...)获取此列表的方法。

方法描述说:

返回的列表是不可修改的,并且 UnsupportedOperationException每次修改尝试都会抛出异常。

要解决此问题,请不要从List接口调用任何修改列表内容的方法(例如List.remove(...))。

您可以做的是将列表的内容复制到集合中,例如类提供的集合FXCollections。一些有用的方法是:

由于您无法修改列表,因此您可以获取列表的副本并根据需要进行修改,或者您可以获取Stream.filter原始集合并仅复制您需要的内容。