Collections 初級

ミューテーションループに代わるコレクション一括操作

コレクションを直接変換するにはremoveIf()、replaceAll()、List.sort()を使用する。

✕ Iterator mutation loop
for (Iterator<Order> it = orders.iterator(); it.hasNext();) {
    if (it.next().cancelled()) {
        it.remove();
    }
}
✓ Java 8+
orders.removeIf(Order::cancelled);
このコードに問題がありますか? お知らせください。
👁

明確な意図

反復方法ではなく、何を変更するかを操作自体が示します。

🐛

より安全な変更

手動でイテレーターから削除する際のルールを回避できます。

⚡

少ないコード

一般的な変換を1つの式で記述できます。

旧来のアプローチ
手動イテレーター削除
モダンなアプローチ
Collection.removeIf()
JDKバージョン
8
難易度
初級
ミューテーションループに代わるコレクション一括操作
利用可能

JDK 8(2014年3月)以降、利用可能

モダンなコレクションインターフェースは、一般的な変更操作を直接提供します。removeIf()、replaceAll()、List.sort()などのメソッドにより、制御フローの多いループを、目的とする変換を明示する操作に置き換えられます。