Java 8 Streamsはコレクション内のアイテムを操作してから削除できますか?

Michael Eric Oberlin:

ほとんどすべての人と同じように、私はまだ新しいJava 8 Streams APIの複雑さを学んでいます(そしてそれらを愛しています)。ストリームの使用方法について質問があります。簡単な例を示します。

Java Streamsを使用すると、を取得しCollection、そのstream()メソッドを使用して、すべての要素のストリームを受け取ることができます。その中に、便利なような方法がいくつかあるfilter()map()forEach()私たちは内容にラムダ操作を使用することができ、。

次のようなコードがあります(簡略化)。

set.stream().filter(item -> item.qualify())
    .map(item -> (Qualifier)item).forEach(item -> item.operate());
set.removeIf(item -> item.qualify());

アイデアは、特定の修飾子に一致するセット内のすべてのアイテムのマッピングを取得し、それらを操作することです。手術後、それらはそれ以上の目的を果たさないため、元のセットから削除する必要があります。コードはうまく機能しますが、これを行うことができる操作がStream1行であるという感覚を揺るがすことはできません。

Javadocにある場合は、見落としている可能性があります。

APIに慣れている人は、そのようなことを知っていますか?

ポール・ボディントン:

あなたはこのようにそれを行うことができます:

set.removeIf(item -> {
    if (!item.qualify())
        return false;
    item.operate();
    return true;
});

場合はitem.operate()、常に返しますtrue、あなたは非常に簡潔にそれを行うことができます。

set.removeIf(item -> item.qualify() && item.operate());

しかし、何が起こっているのかすぐにはっきりしないので、私はこれらのアプローチが好きではありません。個人的には、forループとを引き続き使用しますIterator

for (Iterator<Item> i = set.iterator(); i.hasNext();) {
    Item item = i.next();
    if (item.qualify()) {
        item.operate();
        i.remove();
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

条件によって1つのコレクションから別のコレクションにアイテムを挿入し、Google GuavaまたはJava 8 Stream APIを使用して両方のコレクションを反復処理します

分類Dev

Java 8ストリームは、タイプAのコレクションからタイプBのコレクションを作成します

分類Dev

コレクションのJavaの8地図空の場合は、コレクションと削除エントリから要素を削除します

分類Dev

Java 8ストリームを使用して、異なるタイプの別のコレクションからコレクションを更新する

分類Dev

Java8ストリーミングAPIを使用してコレクションから最大(または最小)を削除する

分類Dev

Java8ストリームはマッピングパイプラインからの複数のアイテムを使用できますか

分類Dev

反復しながらJavaのコレクションからアイテムを削除する

分類Dev

Javaはコレクションから複数のアイテムを取得します

分類Dev

Java 8の操作のストリーム内でアクションを実行する

分類Dev

Javaでストリームとコレクションの違いは何ですか8

分類Dev

Java 8 Collectors groupingByを使用して、コレクションのマップを含むマップを取得するにはどうすればよいですか?

分類Dev

JAVA + StackOverflowErrorのコレクションアイテムから一意のペアを生成します

分類Dev

Java 8を使用して、いくつかの基準によってコレクション内の一意の値をチェックする方法

分類Dev

Javaのコレクションから1つのアイテムを描画します

分類Dev

`lombok`アノテーションとJavaJDK8を使用してメモリ内のJavaクラスをコンパイルする

分類Dev

Java 8 2つのコレクションから異なるエンティティをフィルタリングする方法は?

分類Dev

Java 8でコレクション内のネストされた要素のリストを取得するにはどうすればよいですか?

分類Dev

Java 8 StreamsがAPIレベル24からしか利用できないのはなぜですか?

分類Dev

Java 8ストリーム:ストリームされたコレクションの単一のアイテムを置き換える

分類Dev

Java8を使用してpackage-info.javaのアノテーションを変更できません

分類Dev

Java8を使用してpackage-info.javaのアノテーションを変更できません

分類Dev

Java 8を使用してリストからランダムに未使用のアイテムを取得するよりエレガントな方法はありますか?

分類Dev

Java8のストリームとコレクターを使用したコレクションからマップへの変換のカプセル化

分類Dev

Javaストリームを使用してコレクションのコレクションからいくつかの値を削除します

分類Dev

Java:コレクションから最初のアイテムを取得する

分類Dev

Javaの8呼び出し側にScalaの2.13メソッドから入力されたコレクションを返します

分類Dev

Javaの8ストリームAPI - 新しいソースコレクション任意のステートフル中間の動作保証をしていますか?

分類Dev

Java 8、Googleリフレクション-クラスではなく、注釈のリストとして注釈付きの型を取得します<?>

分類Dev

Javaでストリームを使用してJSONArrayにコレクション/配列を変換する方法8

Related 関連記事

  1. 1

    条件によって1つのコレクションから別のコレクションにアイテムを挿入し、Google GuavaまたはJava 8 Stream APIを使用して両方のコレクションを反復処理します

  2. 2

    Java 8ストリームは、タイプAのコレクションからタイプBのコレクションを作成します

  3. 3

    コレクションのJavaの8地図空の場合は、コレクションと削除エントリから要素を削除します

  4. 4

    Java 8ストリームを使用して、異なるタイプの別のコレクションからコレクションを更新する

  5. 5

    Java8ストリーミングAPIを使用してコレクションから最大(または最小)を削除する

  6. 6

    Java8ストリームはマッピングパイプラインからの複数のアイテムを使用できますか

  7. 7

    反復しながらJavaのコレクションからアイテムを削除する

  8. 8

    Javaはコレクションから複数のアイテムを取得します

  9. 9

    Java 8の操作のストリーム内でアクションを実行する

  10. 10

    Javaでストリームとコレクションの違いは何ですか8

  11. 11

    Java 8 Collectors groupingByを使用して、コレクションのマップを含むマップを取得するにはどうすればよいですか?

  12. 12

    JAVA + StackOverflowErrorのコレクションアイテムから一意のペアを生成します

  13. 13

    Java 8を使用して、いくつかの基準によってコレクション内の一意の値をチェックする方法

  14. 14

    Javaのコレクションから1つのアイテムを描画します

  15. 15

    `lombok`アノテーションとJavaJDK8を使用してメモリ内のJavaクラスをコンパイルする

  16. 16

    Java 8 2つのコレクションから異なるエンティティをフィルタリングする方法は?

  17. 17

    Java 8でコレクション内のネストされた要素のリストを取得するにはどうすればよいですか?

  18. 18

    Java 8 StreamsがAPIレベル24からしか利用できないのはなぜですか?

  19. 19

    Java 8ストリーム:ストリームされたコレクションの単一のアイテムを置き換える

  20. 20

    Java8を使用してpackage-info.javaのアノテーションを変更できません

  21. 21

    Java8を使用してpackage-info.javaのアノテーションを変更できません

  22. 22

    Java 8を使用してリストからランダムに未使用のアイテムを取得するよりエレガントな方法はありますか?

  23. 23

    Java8のストリームとコレクターを使用したコレクションからマップへの変換のカプセル化

  24. 24

    Javaストリームを使用してコレクションのコレクションからいくつかの値を削除します

  25. 25

    Java:コレクションから最初のアイテムを取得する

  26. 26

    Javaの8呼び出し側にScalaの2.13メソッドから入力されたコレクションを返します

  27. 27

    Javaの8ストリームAPI - 新しいソースコレクション任意のステートフル中間の動作保証をしていますか?

  28. 28

    Java 8、Googleリフレクション-クラスではなく、注釈のリストとして注釈付きの型を取得します<?>

  29. 29

    Javaでストリームを使用してJSONArrayにコレクション/配列を変換する方法8

ホットタグ

アーカイブ