Javaストリームの概要

ストリームの概要

前書き

Stream関数型プログラミングインターフェイスはJava8で最初に導入され、ラムダとともにJava開発のマイルストーン機能になりました。これにより、オープナーがコレクションデータを処理する効率が大幅に向上します。

Streamこれは、データが流れるパイプラインであり、データはパイプラインで操作されてから、次のパイプラインに流れます。

収集する

マージフロー

Person p1 = new Person("Tom", 11);
Person p2 = new Person("Jack", 12);
Person p3 = new Person("Jane", 15);
Person p4 = new Person("Mike", 14);
Person p5 = new Person("John", 13);

List<Person> newList = Stream.of(p1, p2, p3, p4, p5)
    .collect(Collectors.toList());
System.out.println(newList);
//[Person{name='Tom', age=11}, Person{name='Jack', age=12}, Person{name='Jane', age=15}, Person{name='Mike', age=14}, Person{name='John', age=13}]

フィルタ

フィルターフロー

List<Person> newList = Stream.of(p1, p2, p3, p4, p5)
    .filter(p -> p.getAge() > 13)
    .collect(Collectors.toList());
System.out.println(newList);
//[Person{name='Jane', age=15}, Person{name='Mike', age=14}]

地図

変換フロー

List<String> newList = Stream.of(p1, p2, p3, p4, p5)
    .map(p -> p.getName())
    .collect(Collectors.toList());
System.out.println(newList);
//[Tom, Jack, Jane, Mike, John]

flatMap

複数のストリームを1つのストリームに結合する

List<String> newList = Stream.of(p1, p2, p3)
    .flatMap(p -> Arrays.stream(p.getName().split("")))
    .collect(Collectors.toList());
System.out.println(newList);
//[T, o, m, J, a, c, k, J, a, n, e]

最大&最小

最大値と最小値を取得します

Optional<Person> max = Stream.of(p1, p2, p3, p4, p5)
    .max((o1, o2) -> o1.getAge() - o2.getAge());

Optional<Person> min = Stream.of(p1, p2, p3, p4, p5)
    .min(Comparator.comparing(p -> p.getAge()));
System.out.println(max.get());
System.out.println(min.get());
//Person{name='Jane', age=15}
//Person{name='Tom', age=11}

カウント

総量

long count = Stream.of(p1, p2, p3, p4, p5)
    .filter(p -> p.getAge() > 13)
    .count();
System.out.println(count);
//2

減らす

累積計算

Integer reduce = Stream.of(1, 2, 3, 4, 5)
    .reduce(0, (acc, x) -> acc + x);

System.out.println(reduce);
//15

Collectors.joining

ストリングスプライシング

String newStr = Stream.of(p1, p2, p3, p4, p5)
    .map(p -> p.getName())
    .collect(Collectors.joining("-", "[", "]"));
//[Tom-Jack-Jane-Mike-John]

おすすめ

転載: blog.csdn.net/qq_14876133/article/details/109314742