2016-06-14 129 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感謝這個解決方案。我用這個代替了我的代碼,它運行良好 –

相關問題