当前位置:   article > 正文

java内存中分页,分批方法_java内存中进行分页

java内存中进行分页

方法一

1、批量方法接口定义

  1. public interface BatchAddCallback<T> {
  2. Integer batchAdd(List<T> list);
  3. }

2、分页方法实现

  1. @Override
  2. public Integer batchAdd(List list, BatchAddCallback callback) {
  3. if (list.size() <= BATCH_MAX_SIZE) {
  4. return callback.batchAdd(list);
  5. }
  6. // 最终插入记录数
  7. int resCount = 0;
  8. List saveList = new ArrayList<>();
  9. for (Object item : list) {
  10. // 如果大于等于允许插入最大数量 则进行插入数据
  11. if (saveList.size() >= BATCH_MAX_SIZE) {
  12. Integer count = callback.batchAdd(saveList);
  13. if (count != null) {
  14. resCount = resCount + count;
  15. }
  16. saveList.clear();
  17. }
  18. saveList.add(item);
  19. }
  20. // 最后一批
  21. if (!saveList.isEmpty()) {
  22. Integer count = callback.batchAdd(saveList);
  23. if (count != null) {
  24. resCount = resCount + count;
  25. }
  26. }
  27. return resCount;
  28. }

3、方法介绍

这个方法是要遍历一遍list用于获取每一个批次需要的数据,效率一般,适合数据量不大的情况。

方法二

1、批量方法接口定义,同上

2、批量操作

  1. public Integer batchAdd2(List list, BatchAddCallback callback) {
  2. if (CollectionUtils.isEmpty(list)) {
  3. return 0;
  4. }
  5. if (list.size() <= BATCH_MAX_SIZE) {
  6. return callback.batchAdd(list);
  7. }
  8. // 最终插入记录数
  9. int resCount = 0;
  10. // 计算一共有多少页
  11. int pageNum =
  12. list.size() % BATCH_MAX_SIZE == 0 ? list.size() / BATCH_MAX_SIZE : list.size() / BATCH_MAX_SIZE + 1;
  13. List saveList = new ArrayList<>();
  14. // 按照页数取数据
  15. for (int i = 0; i < pageNum; i++) {
  16. int startIndex = i * BATCH_MAX_SIZE;
  17. int endIndex;
  18. // 最后一页
  19. if (i == pageNum - 1) {
  20. endIndex = list.size() - 1;
  21. } else {
  22. endIndex = i * (BATCH_MAX_SIZE + 1) - 1;
  23. }
  24. // 批量操作
  25. saveList = list.subList(startIndex, endIndex);
  26. callback.batchAdd(saveList);
  27. resCount = resCount + saveList.size();
  28. }
  29. return resCount;
  30. }

3、点评

这个方法看似很底层,它通过subList避免了遍历每个元素,效率较高。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/294488
推荐阅读
相关标签
  

闽ICP备14008679号