ホームページ  >  記事  >  Java  >  Javaコレクションストリーム

Javaコレクションストリーム

王林
王林オリジナル
2024-08-30 15:47:35551ブラウズ

Java ストリームはコレクション コンポーネントの 1 つであり、その項目を内部的に反復するための API です。つまり、Java イテレーターや Java などの Java コレクション反復機能を使用したい場合は、独自の要素を反復できます。 Java 反復可能インターフェースを使用した for-each ループは要素の反復を実装する必要があります。ストリームはデータ構造メモリー内の値を変更せず、パイプライン構造のようなデフォルトのスペースを割り当てることができるデフォルトのメソッドを使用して結果を提供します。必要な出力を生成します。

Java コレクション ストリームのガイド

最初に、コレクション インターフェイスにストリーム メソッドを導入するためのおそらく最も重要な議論があります。項目のリストが表示されると、ストリーム データが特定のストリームで開かれます。最も単純で最も一般的なアクションは forEach() ループです。これはストリーム要素を実行し、それぞれの要素で指定された関数を呼び出します。このメソッドも広く使用されており、Iterable、Map、その他のクラスに含まれています。ストリームはデータ ラッパーにすぎず、データを保存したり、基になるデータ ソースに影響を与えたりすることは望ましくありません。多くの便利で高性能な操作はストリームによってサポートされており、逐次または並列で実行できるラムダを使用して簡潔に説明されています。ストリームはデータを格納しないため、データ構造ではありません。また、基になるデータ ソースには変更が加えられません。データがストリームと並行して順序付けされている場合、データが順番に処理されるかどうかは関係ありません。実装では、ストリームの遭遇順序が維持されます。一般に、使用される Spliterator に CONCURRENT プロパティがある場合、ストリームはスレッドセーフです。ストリーム API はパイプラインの各ステップに対して多数のコントラクトを定義しており、それらのいずれかが壊れている場合、予期しない動作や例外が発生する可能性があります。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

コレクション インスタンスからのストリーム インスタンス

ストリームは、コレクション、配列、その他の入出力チャネルから入力を受け取ります。これらは、入力を関数に渡す方法です。新しいオブジェクト作成手順を利用して、オブジェクトが作成され、特定の関数呼び出しに割り当てられます。また、ストリームはパイプライン アーキテクチャとそのメソッドに従って出力結果を提供するだけであり、値と実際のデータ構造プロセスは変更されません。また、コレクションは主に他のループや外部ループを使用して反復されますが、ストリーミングに使用する場合は、特定のループ操作を使用して内部で反復する必要がありますが、ほとんどの場合、外部ループは必要ありません。 Java 8 の Stream API のターミナル メソッドの 1 つは、データを収集するためのcollect() メソッドです。これにより、Stream インスタンスに含まれるデータ コンポーネントを使用して可変フォールド操作を実行できるようになります (要素をデータ構造に再パッケージ化し、追加のロジックを適用し、それらを連結するなど)。 Collectors クラスには、すべての事前定義された実装が見つかります。読みやすさを向上させるには、次の静的インポートを使用するのが一般的です。すべての Stream 項目を List オブジェクトに集約するには、toList コレクターを使用します。知っておくべき重要なことは、この手法では、特定の List 実装を推定できないということです。これをより詳細に制御したい場合は、代わりに toCollection を使用できます。すべての Stream アイテムを Set インスタンスに集約するには、toSet コレクターを使用します。このメソッドを使用すると、特定の Set 実装を推定できないことを認識することが重要です。これをより詳細に制御したい場合は、代わりにコレクションを使用できます。 Set には重複する要素はありません。コレクションに同一のコンポーネントが含まれている場合、それらは最終セットに 1 回だけ表示されます。 Stream アイテムを Map インスタンスに集約するには、toMap コレクターを使用します。そのためには、keyMapper と valueMapper という 2 つの関数が必要になります。Stream 要素から Map キーを抽出するには keyMapper を使用し、特定のキーに関連付けられた値を取得するには valueMapper を使用します。

Java ストリームの作成

Java では、コレクションを使用したり、指定された値からストリーム データを作成したりするなど、さまざまな方法でストリームを作成できます。また、ストリーム データを使用して配列を作成し、ストリームを使用して空のスペースを計算します。 empty() メソッドは空のスペースを計算するだけでなく、Stream を使用して Stream データを作成することもできます。 builder() メソッド。 Iterable はインターフェイスであり、既定のメソッド StreamSupport.Stream() メソッドを提供せず、Iterable オブジェクトを使用して Stream データを取得するため、 iterate() メソッドの助けを借りて無限の Stream データを計算できます。

例 #1

import java.util.*;
import java.util.stream.*;
class first {
private static <T> void methd(Iterable<T> itr)
{
Stream<T> str
= StreamSupport
.stream(itr.spliterator(),
false);
Iterator<T> its = str.iterator();
while (its.hasNext()) {
System.out.print(its.next() + " ");
}
}
public static void main(String[] args)
{
Iterable<String> itr
= Arrays.<em>asList</em>("Marina", "Adyar", "Parrys or Broadway","Tambaram","Gundy");
methd(itr);
}
}

サンプル出力:

Javaコレクションストリーム

In the above example we used Stream Instance creation and also we can use the StreamSupport class for accessing the stream() method. Like that we can use the Iterator<> interface for accessing the stream inputs and assign it to the variable. In the main method using Iterable<> interface we can access the values as Arrays and asList() method.

Example #2

import java.util.*;
import java.util.stream.*;
class Second {
private static <T> void methd(Iterator<T> itr)
{
Spliterator<T> splititr
= Spliterators
spliteratorUnknownSize(itr,
Spliterator.NONNULL);
Stream<T> str
= StreamSupport.<em>stream</em>(splititr, false);
Iterator<T> its = str.iterator();
while (its.hasNext()) {
System.<em>out</em>.print(its.next() + " ");
}
}
public static void main(String[] args)
Iterator<String> itre = Arrays
.asList("Thiruvanmaiyur", "Perungalathur", "TNagar","Central","Besant Nagar")
.iterator();
methd(itre);
}
}

Sample Output:

Javaコレクションストリーム

In the above example, we used an additionally Spliterator class for accessing the Stream inputs using Iterator interface we can access the Array List inputs using the asList() method.

Conclusion

While streams aren’t used by everyone and don’t necessarily indicate a superior approach, free certificate courses can help developers understand this newer way of programming, which incorporates functional-style programming and lambda expressions for Java. It’s up to developers to determine whether to use functional or imperative programming styles, and by taking advantage of free certificate courses, they can learn how to effectively combine both ideas to enhance their programs with enough effort.

以上がJavaコレクションストリームの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。