2016-06-14 18 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'だけが必要な場合は、' javafx.collections' APIではなく 'java.util' APIを使うべきです。 –

+0

@james_Dあなたが正しいです、私はshowOpenMultipleDialog()を使用しています。これはjava.util.List を返します。しかし、私はそのようなリストから要素を取り除く方法も得ていません。 –

0

私は1つの解決策を見つけました。それは正しい方法ではないかもしれませんが、うまくいきます。私がしたのは、拡張forループを使用して、変更不可能なリストの内容をArrayListにコピーしました。そして、ArrayListに対してremoveメソッドを適用しました。しかし、もしあなたが良いソリューションを投稿してください。

+0

コピーを行う[コンストラクタ](http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-java.util.Collection-)を使用するだけではどうですか。君は? –

+0

@James_Dこのソリューションをありがとう。私はこれで私のコードを置き換え、それはうまく動作します –

関連する問題