3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

java stream 本当によく使う中間・終端操作の備忘録1

Last updated at Posted at 2018-05-14

前回の投稿でStreamの基本、中間操作→終端操作という流れまで書いた。
本当に備忘録的な感じになるが、今まで使ってきたものや使用頻度の高そうな中間・終端操作を書いていく。

まずは個人的に一番使用頻度が高いと思っている、map()とCollectors.toList()から。
例えばnameやid等をもつStaffクラスのリストがあったとする。


public class Staff {

    private String name;
    private Long id;
    private int age;
   
   
   
//getter/setter等
   
   

IDには1から連番で数字が入っている(重複なし)と仮定し、処理上の理由でIDのみを抽出したリストが欲しい場合
以下のようにmap()とCollectors.toList()を使用することで抽出することができる。

    //staffListは6要素
 
        List<Long> idList = staffList.stream().map(staff -> staff.getId()).collect(Collectors.toList());
        idList.stream().forEach((id) -> {
            System.out.println(id.toString());
        });

出力結果

1
2
3
4
5
6
7
8
9
10
11
12

上記で行われている処理としては、
map(staff -> staff.getId())
の部分でstaffListから取り出した1要素であるstaffを、staff.getId()に変換している。
その後、
collect(Collectors.toList())
で全要素のstaffから取り出したstaff.getId()群をリスト化。
結果として、IDのみ抽出したリストが取得出来ている。
(IntStreamを使用して12人のスタッフ君を用意してますが、IntStreamの説明についてはいずれ…今回はコードだけ載せておきます)

// IntStreamで用意した12人のスタッフ君、1ミリでもどこかで参考になれば
List<Staff> staffList = IntStream.rangeClosed(1, 12).boxed()
				.map(i -> new Staff(String.valueOf(i) + "君", Long.valueOf(i), i)).collect(Collectors.toList());

ここで使用したmap(変換)は本当に様々な所で使えるので忘れないようにしたい。

次に良く出てきそうなものとして、filterがあります。
mapは変換でしたが、filterは検索です。
ここではIDを指定してスタッフの名前を求めています。
各スタッフの名前は、IDの数字に君を付けたものを入力しました。

// 引数searchID = 1L
        Staff target = staffList.stream().filter(staff -> staff.getId() == searchID).findFirst().orElse(null);
        System.out.println(target.getName());

出力結果

1君

filter(staff -> staff.getId() == searchID)
上記のfilterメソッドで絞り出す条件を指定。

findFirst().orElse(null)
で最初に条件にfilterにマッチしたStaffを取得し、もし見つからなければnullを返却しています。

他にも色々よく使うものがあるので時間を見つけて追記していきます。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?