2012-05-07 1 views
3

Collections2.filterから返されたコレクションは変更不可能であり、そのイテレーターも変更できません。 コレクションのフィルタリングされたライブビューを返しますが、変更可能なイテレータを返す類似のものはありますか?イテレータでremove()メソッドを使用する必要があります。Googleのコレクション - collections.filterの変更可能なイテレータ?

ありがとうございました。

+6

これは関数型プログラミングから来て、伝統的に読み取り専用コレクションを返す 'filter'の良いユースケースのようには聞こえません。普通の 'for'ループを使わないのはなぜですか? –

+0

このリストは他の場所でも保持されていますので、ある場所でオブジェクトを削除するとどこかに反映されますので、ライブビューが重要です。 forループはしません – duduamar

+1

@duduanar:なぜ明示的なループはしませんか?私はあなたの特定のユースケースについてより多くの情報が必要だと思います。また、 'filter'によって返されたコレクションを元のソースにいつでも戻すことができます。 Guavaは不変性の概念を強調していますが、これはあなたの要求に反するものです。 –

答えて

-1

new ArrayList(Collections2.filter(...))?あなたは何らかの理由でフィルターを使用すると主張する場合。

ところで、Collections2.filterは変更不可能ではありません。それはPredicate論理要素だけを許可するコレクションです。

+3

これは 'Collections2.filter()'の内容を新しい 'ArrayList'にコピーします。そのリストから要素を削除しても、それらの要素は元のコレクションから削除されません。 –

関連する問題