[Java]ストリームと並列処理②
13390 ワード
[ストリームのタイプ]
Java 8から新たに追加された
BaseStreamインタフェースは、すべてのストリームで使用可能な汎用メソッドのみを定義します.
つまり、コードでは直接使用されません. 下流Stream、IntStream、LongStream、DoubleStreamは直接使用されるStreamです. Streamは、オブジェクト要素を処理するストリームであり、 IntStream、LongStream、DoubleStreamは、それぞれ基本タイプint、long、doubleStreamを処理するストリームです. このストリームインタフェースのインプリメンテーションオブジェクトは、異なるソースから取得できます.
主にコレクションと配列から取得されますが、次のソースからストリーム実装オブジェクトを取得することもできます.
1.コレクションからストリームを取得
次の例では、 FromCollectionExample 運転結果 FromArrayExample 運転結果
InteStream()の
IntStreamの別の FromIntRangeExample 運転結果
これはジャワの本です.
Java 8から新たに追加された
java.util.stream
パケットには、ストリームAPIが含まれている.パッケージの内容を見ると、BaseStreamインタフェースを親とし、サブインタフェースには以下の継承関係があります.つまり、コードでは直接使用されません.
主にコレクションと配列から取得されますが、次のソースからストリーム実装オブジェクトを取得することもできます.
1.コレクションからストリームを取得
次の例では、
List<Student>
のセットからStream<Student>
を取得し、要素をコンソールに出力します.import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class FromCollectionExample {
public static void main(String[] args) {
List<Student> studentList = Arrays.asList(
new Student("김", 10),
new Student("이", 20),
new Student("박", 30)
);
Stream<Student> stream = studentList.stream();
stream.forEach(s -> System.out.println(s.getName()));
}
}
김
이
박
2.アレイからストリームを取得import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class FromArrayExample {
public static void main(String[] args) {
String[] strArray = {"김", "이", "박"};
Stream<String> strStream = Arrays.stream(strArray);
strStream.forEach(a -> System.out.print(a + ", "));
System.out.println();
int[] intArray = {1, 2, 3, 4, 5};
IntStream intStream = Arrays.stream(intArray);
intStream.forEach(a -> System.out.print(a + ", "));
System.out.println();
}
}
김, 이, 박,
1, 2, 3, 4, 5,
3.数値範囲からストリームを取得InteStream()の
rangeClosed()
法を用いて1から100の和を求めることができる.rangeClosed()
メソッドは、1番目から2番目に順次提供されるIntStreamを返す.IntStreamの別の
range()
メソッドも同じIntStreamを返しますが、2番目のパラメータ値は含まれません.import java.util.stream.IntStream;
public class FromIntRangeExample {
public static int sum;
public static void main(String[] args) {
IntStream stream = IntStream.rangeClosed(1, 100);
stream.forEach(a -> sum += a);
System.out.println("총합: " + sum);
}
}
총합: 5050
[参考資料]これはジャワの本です.
Reference
この問題について([Java]ストリームと並列処理②), 我々は、より多くの情報をここで見つけました https://velog.io/@mmy789/Java-스트림과-병렬-처리-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol