バックエンド

【Java】Stream APIでlimit, skipを使ってよう!

stream-api-limit-skip

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような質問をいただきました。

Stream APIのlimitの使い方教えて!

実はlimitと同じようなメソッドとしてskipが存在します。

そこで今回はlimitに加えてskipについても解説していきます!

limit, skipって何?

limit

ループさせる要素をn個までに制限をする

skip

ループさせる要素を先頭からn個無視する

どちらも数値を渡してあげるだけなので非常に簡単に使えます。

表示の個数を制限する場合によくlimitを使っていました!

使い方

まずはlimitもskipも使わないでループさせてみます。

1〜10を順番に表示するだけのサンプルです。

こちらのサンプルにlimitとskipを追加してみます。

List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
        list.stream()
                .forEach(System.out::println);
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10

limitを追加してみよう!

3個までに制限をするようにしてみました。

この場合は3まで表示されます。

List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
        list.stream()
                .limit(3)
                .forEach(System.out::println);
 1
 2
 3

skipを追加してみよう!

先頭から2個を無視するようにしてみました。

この場合は3から表示されます。

List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
        list.stream()
                .skip(2)
                .forEach(System.out::println);
 3
 4
 5
 6
 7
 8
 9
 10

limitとskipを追加してみよう!

最後にlimitとskipを同時に使ってみたいと思います。

先頭から2個を無視して、3個までに制限します。

この場合は3から5まで表示されます。

List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
        list.stream()
                .skip(2)
                .limit(3)
                .forEach(System.out::println);
 3
 4
 5

まとめ

以下のように無視、制限したいタイミングでlimit, skip挿入するだけで簡単に使えます。

List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
        list.stream()
                .skip(2)
                .limit(3)
                .forEach(System.out::println);

あとがき

今回はStream APIのskip、limitを使ってみました。

使い方は簡単で、制限、無視したい数値を渡してあげるだけです。

名前もわかりやすく、感覚的に使えるので使いやすいですね。

面倒なことをしなくても簡単に設定できるので非常に便利です。

機会があれば使ってみてください!