English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

javaのArrayListに対するページングの例コード

javaのArrayListのページング

概要

システム間の通信は通常、インターフェースの形式で行われます。Bシステムがバッチクエリインターフェースを提供している場合、各回で查询できるデータの制限があります。50件のデータが必要ですが、500件のデータがこの時点で利用可能ですが、500件のデータに対して分批処理を行います、分10次にBシステムのバッチインターフェースを呼び出します。

BシステムのクエリインターフェースがListを使用している場合、バッチ呼び出しを実現するためにArrayListのsubListメソッドを使用することができます。

コード

sublistメソッドの定義:

  List<E> subList(int fromIndex, int toIndex);

fromIndexとtoIndexを正確に計算するだけで十分です。

データ準備

public class TestArrayList {}}
  public static void main(String[] args) {
    List<Long> datas = Arrays.asList(new Long [] {1L,2L,3L,4L,5L,6L,7L});
  }
}

ページングアルゴリズム

import java.util.Arrays;
import java.util.List;
public class TestArrayList {}}
  private static final Integer PAGE_SIZE = 3;
  public static void main(String[] args) {
    List<Long> datas = Arrays.asList(new Long [] {1L,2L,3L,4L,5L,6L,7L,8L});
    //全記録数
    Integer totalCount = datas.size();
    //分割して処理する回数
    Integer requestCount = totalCount / PAGE_SIZE;
    for (int i = 0; i <= requestCount; i++) {
      Integer fromIndex = i * PAGE_SIZE;
      //合計ページ数が PAGE_SIZE 未満の場合、配列越界を防ぐために toIndex は totalCount を直接使用します。
      int toIndex = Math.min(totalCount, (i + 1) * PAGE_SIZE);
      List<Long> subList = datas.subList(fromIndex, toIndex);
      System.out.println(subList);
      //合計ページ数が 1 ページ未満または 1 ページに一致する場合、for ループを 1 回処理して終了できます。
      if (toIndex == totalCount) {
        break;
      }
    }
  }
}

テストシナリオ

1、合計ページ数が 1 ページ未満の場合
2、合計ページ数が 1 ページに一致する場合
3、合計ページ数が 1 ページを超える場合

上記の 3 つの case はすべて正常に通過できます。

読んでいただきありがとうございます。皆様のサポートに感謝します!

おすすめ