ストリーム API は Java 8 で導入され、コレクションの操作を大幅に簡素化できます。 Stream クラスは、フィルタリング、マッピング、マージなど、ストリームを操作するための多くの機能メソッドを提供します。このうち、limit と Skip は、ストリーム操作の要素数を制限するために使用される 2 つの関数です。
1. Limit 関数
limit 関数は、ストリーム内の要素の数を制限するために使用され、制限の数を示す long 型パラメーター n を受け入れます。 limit 関数を呼び出した後、元のストリームの最初の n 要素のみを含む新しいストリームが返されます。例:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); list.stream().limit(3).forEach(System.out::print);
上記のコードの出力結果は: 1 2 3 です。この例では、stream メソッドを通じて List コレクションを Stream に変換し、次に、limit メソッドを使用してストリーム内の要素を制限し、最後に forEach メソッドを通じて結果を出力します。
2. スキップ関数
スキップ関数はストリーム内の要素をスキップするために使用され、スキップする数を示すlong型パラメータnを受け入れます。スキップ関数を呼び出した後、元のストリームの最初の n 要素をスキップする新しいストリームが返されます。例:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); list.stream().skip(2).forEach(System.out::print);
上記のコードの出力結果は: 3 4 5 です。この例では、stream メソッドを通じて List コレクションを Stream に変換し、次に Skip メソッドを使用して最初の 2 つの要素をスキップし、最後に forEach メソッドを通じて結果を出力します。
3.limit関数とskip関数を使ってページングを実装する
limit関数とskip関数を併用すると簡単にページング関数を実装できます。 N 個の要素を含むリストがあり、各ページに M 個の要素を表示するページング関数を実装したいとします。次の方法で実装できます:
public class PaginationDemo { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int i = 1; i <= 10; i++) { list.add(i); } int pageSize = 3; int pageNum = 1; int start = (pageNum - 1) * pageSize; int end = pageNum * pageSize; List<Integer> result = list.stream().skip(start).limit(end - start).collect(Collectors.toList()); System.out.println(result); } }
上記のコードでは、まず 10 個の要素を含むリストを作成します。次に、各ページに表示される数値 pageSize とページ番号 pageNum を定義し、スキップする必要がある要素の数 start とフィルターする必要がある要素の数 end-start を計算します。最後に、limit 関数とskip 関数を使用して、指定されたページ番号に必要な要素をリストからフィルターで除外し、collect メソッドを通じて結果をリストに収集します。
上記は、制限関数とスキップ関数の応用であり、ストリーム内の要素を簡単に制限およびスキップし、ストリーム操作のページング機能を実現するのに役立ちます。
以上がJava でストリーム操作に Stream の制限およびスキップ機能を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。