2016-06-14 96 views
0

我想从我从FileChooser获得的不可修改列表中删除元素。但是为了这样做,它抛出了一个UnsupportedOperationException。任何人都可以建议我以任何方式删除/删除列表中的内容?有没有办法修改一个不可修改的集合?

+2

“不可修改”表示您无法修改它。你真的需要做什么?你不能只用你需要的元素创建一个新的列表吗? –

+0

最简单的方法是从原始的列表中创建一个新列表。你想达到什么目的?这可能是[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – Itai

+0

我正在尝试创建用于浏览和编辑图像的应用程序。为此,我使用方法showOpenMultipleDialog()。当我尝试从此方法返回的列表中删除任何文件时。文件被删除,但从文件列表中删除该文件的操作会引发异常。 –

回答

0

查看FXCollections静态类。一些有用的方法是:

因为你不能修改该列表(这是显而易见的名字),你可以获取列表的副本并修改如你所愿

+0

注意这些方法创建'ObservableList's,它可能比需要的多(例如,'FileChooser.showOpenMultipleDialog()'返回一个普通的'List')。如果你只需要一个常规的'List',你应该使用'java.util' API,而不是'javafx.collections' API。 –

+0

@james_D你说得对,我正在使用showOpenMultipleDialog(),它返回java.util.List 。但是,我也没有得到如何从这样的列表中删除任何元素。 –

0

我找到了一个解决方案。虽然这可能不是正确的方式,但它有效。我所做的是;我使用增强for循环将不可修改列表的内容复制到ArrayList中。然后在ArrayList上应用remove方法。但是,如果你有一个更好的解决方案,请发布。

+0

为什么不直接使用[构造函数](http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-java.util.Collection-)来进行复制您? –

+0

@James_D感谢这个解决方案。我用这个代替了我的代码,它运行良好 –

相关问题