Javaのストリームについて知っておくべきことすべて



この記事では、最近Javaで導入されたパッケージであるStream in Javaを紹介し、その機能について詳しく説明します。

Java8の新しい追加パッケージ。 java.util.streamが追加されました 効率的なプログラミング体験のためのユーザー。ストリームは、複数のメソッドをサポートする一連のオブジェクトとして定義できます。この記事では、Streaminを探索します。

Javaのデータ構造とは

この記事では、次のポインタについて説明します。





Stream In Javaに関するこの記事を始める前に、いくつかの重要な機能を見てみましょう。

Javaでのストリーム:機能

  • ストリームはデータ構造ではなく、要素を格納しません。コレクション、配列、またはI / Oチャネルは、入力を受け取る場所です。
  • ストリームのソースは、操作が実行された後も変更されません。たとえば、ストリームをフィルタリングすると、元のストリームを変更するのではなく、フィルタリングされた要素なしで新しいストリームが生成されます。
  • filter、reduce、match、findなどの集約操作はstreamによってサポートされています。
  • 怠惰は、必要な場合にのみコードを評価するため、ストリームの機能と見なすことができます。
  • ストリームに存在する要素の訪問は、ストリームの存続期間中に1回だけ実行できます。ソースに存在する同じ要素に再度アクセスするには、新しいストリームを作成する必要があります。

Javaでのストリームに関するこの記事に進む



ストリームの生成

ストリームは、次の方法で生成できます。

  • ストリーム()–シーケンシャルストリームが返されます。コレクションソースと見なされます。
  • parallelStream()–並列ストリームが返されます。コレクションはソースと見なされます。
リスト文字列= Arrays.asList( 'Hello'、 ''、 'Hi'、 'Hola'、 'Bonjour'、 ''、 'Namaste')リストフィルタリング= strings.stream()。filter(string->!string。 isEmpty())。collect(Collectors.toList())

Javaでのストリームに関するこの記事に進む

ストリームの操作:

中間操作:

地図



コレクションに存在する要素は、引数として渡された述語に従って他のオブジェクトにマップできます。次の例は、mapメソッドを使用して数値の一意の平方を表示するために使用されます。

リストnum = Arrays.asList(5,4,4,2,3,3)リストsquares = num.stream()。map(y-> y * y).distinct()。collect(Collectors.toList())

フィルタ

この方法を使用すると、基準に基づいて要素を削除できます。

リスト名= Arrays.asList( 'Saturday'、 'Sunday'、 'Thursday')リストres = name.stream()。filter(s-> s.startsWith( 'S'))。collect(Collectors.toList() )

ソート済み

この方法を使用して、ストリームをソートできます。

リスト名= Arrays.asList( 'Saturday'、 'Sunday'、 'Thursday')リストres = name.stream()。sorted()。collect(Collectors.toList())

Javaでのストリーム:ターミナル操作:

収集する

ストリームの要素に対する処理の結果は、収集操作を使用して組み合わせることができます。

リストnum = Arrays.asList(4,3,2,5,6)Set res = num.stream()。map(y-> y * y).collect(Collectors.toSet())

forEach

このメソッドは、ストリームに存在するすべての要素を反復処理するために使用されます。

リストnum = Arrays.asList(4,3,2,5)num.stream()。map(x-> x * x).forEach(y-> System.out.println(y))

減らす

この方法を使用すると、ストリームの要素を1つの値に減らすことができます。

リストnum = Arrays.asList(4,3,2,5)inteven = num.stream()。filter(x-> x%2 == 0).reduce(0、(res、i)-> res +私)

変数resには最初に値0が割り当てられ、iがそれに追加されます。

Javaでのストリームに関するこの記事に進む

フィルタリング

コードは、streamメソッドを使用してフィルタリングできます。次の例では、商品の価格が除外されます。

importjava.util。* import java.util.stream.Collectors class Instrument {int num String name float price public Instrument(int num、String name、float price){this.num = num this.name = name this.price = price}} public class Test {public static void main(String [] args){List InstrumentsList = new ArrayList()//製品の追加instrumentsList.add(new Instrument(1、 'Guitar'、15000f))instrumentsList.add(new Instrument(2、 'Piano'、18000f))instrumentsList.add(new Instrument(3、 'Flute'、15000f))instrumentsList.add(new Instrument(4、 'Drums'、48000f))instrumentsList.add(new Instrument( 5、 'Ukulele'、32000f))List InstrumentPriceList2 = InstrumentsList.stream()。filter(p-> p.price> 30000)//フィルタリングデータ.map(p-> p.price)// fetching price .collect( Collectors.toList())//リストとして収集System.out.println(InstrumentPriceList2)}}
 出力: 

[48000.0、32000.0]

Javaでのストリームに関するこの記事に進む

反復:

反復は、Javaのストリームを使用して実行できます。

importjava.util.stream。* public class Test {public static void main(String [] args){Stream.iterate(1、element-> element + 1).filter(element-> element%4 == 0)。 limit(6).forEach(System.out :: println)}}

出力:

4

8

12

16

20

24

Javaでのストリームの概念をより効果的に理解するために、別の例を見てみましょう。

例:

importjava.util。* importjava.util.stream。* public class Test {public static void main(String args []){//整数のリストを作成するList num = Arrays.asList(6,7,8,9 )// mapメソッドを使用するListsquares = num.stream()。map(y-> y * y)。 collect(Collectors.toList())System.out.println(squares)//文字列リストのリストを作成するdays = Arrays.asList( 'Friday'、 'Saturday'、 'Sunday')//フィルターメソッドList res = days .stream()。filter(s-> s.startsWith( 'S'))。 collect(Collectors.toList())System.out.println(res)//ソートされたメソッドリストdisplay = days.stream()。sorted()。collect(Collectors.toList())System.out.println(display)/ /整数のリストの作成リスト番号= Arrays.asList(6,9,5,7,1)// collectメソッドはセットを返しますSetsqSet = number.stream()。map(y-> y * y).collect (Collectors.toSet())System.out.println(sqSet)// forEachメソッドnum.stream()。map(y-> y * y).forEach(x-> System.out.println(x))/ / reduceメソッドinteven = num.stream()。filter(x-> x%2 == 0).reduce(0、(result、i)-> result + i)System.out.println(even)}}

出力:

[36、49、64、81]

Javaパスを変更する方法

[土曜日と日曜日]

[金曜、土曜、日曜]

[81、49、1、36、25]

36

49

64

81

14

ストリームを使用すると、ユーザーは要素に対して効果的に操作を実行できます。

これで、「StreaminJava」に関するこの記事は終わりです。詳細については、信頼できるオンライン学習会社であるEdurekaによるJavaトレーニングをご覧ください。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークに加えて、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。