LoginSignup
1
0

More than 3 years have passed since last update.

Streamの中間処理

Posted at

Streamの生成処理
で生成したStreamの対して様々処理を与える部分。

ここではまだListを生成したり、文字列として出力したりなどは行わない。
この記事では例として、すべての終端処理にListを再生成させておく

map

ラムダ式や関数を用いて要素を変換したい場合に用いる。

// ラムダ式
List<Integer> actual = list.stream().map(s->s.length()).collect(Collectors.toList());

// メソッド参照
List<Integer> actual = list.stream().map(String::length).collect(Collectors.toList());

filter

条件式によってStreamの要素の絞りこみを行いたいときに用いる

List<String> actual = list.stream().filter(s -> s.equals("b")).collect(Collectors.toList());

distinct

要素の重複削除を行う

List<String> list = Arrays.asList("a","a","b","b","c");

List<String> actual = list.stream().distinct().collect(Collectors.toList());

// a,d,c

peek

Stream自体の要素に影響を与えない処理を行いたい場合に使用する

List<String> actual = list.stream().peek(System.out::println).collect(Collectors.toList());

Sorted

文字通りソートを行いたい場合に使用する

// 昇順
List<String> actual = list.stream().sorted().collect(Collectors.toList());

// 降順
List<String> actual =list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());

skip

要素のn番目から取得したい場合に用いる。
それより前の要素は捨てられるので注意

List<String> list = Arrays.asList("a","b","c","d","e");

list.stream().skip(2).peek(System.out::println).collect(Collectors.toList());

// c,d,e

limit

先頭からn個を取得したいときに用いる

List<String> list = Arrays.asList("a","b","c","d","e");

list.stream().limit(3).peek(System.out::print).collect(Collectors.toList());

/// a,b,c

list.stream().skip(2).limit(2).peek(System.out::print).collect(Collectors.toList());

// c,d
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0