两种List集合分页方式
程序员文章站
2022-04-16 09:18:51
两种List集合分页方式,你学费了吗~...
平凡也就两个字: 懒和惰;
成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~
两种List集合分页方式
工作中我们有时会遇到这种情况:我们需要保存一批List集合数据到数据库,但是由于list集合中的数据较多,可能会占用较大数据库内存,最终可能导致数据库锁表或宕机。
这种情况下,我们需要对数据库进行优化或者对list集合数据进行分批次处理。减小数据库的内存开销,提高性能。
1 普通分页
大多数同学会用下面的方式对list集合数据进行拆分分页。
1.1 手动分页
//分页大小
private static final int PAGE_SIZE = 5;
/**
* 手动分页
*/
private static void splitList(List<String> list) {
int listSize = list.size();
int page = getPage(listSize);
int fromIndex;
int toIndex;
//分页拆分集合
List<List<String>> pageList = new ArrayList<>();
for (int i = 0; i < page; i++) {
fromIndex = i * PAGE_SIZE;
toIndex = (i + 1) * PAGE_SIZE;
if (toIndex > listSize) {
toIndex = listSize;
}
//截取一段集合数据
List<String> subList = list.subList(fromIndex, toIndex);
pageList.add(subList);
}
//循环打印看看
pageList.forEach(System.out::println);
}
/**
* 获取分页
* @param listSize 总list大小
*/
private static Integer getPage(int listSize) {
int page = listSize / PAGE_SIZE;
int surplus = listSize % PAGE_SIZE;
if (0 != surplus) {
page++;
}
return page;
}
1.2 测试手动分页
public static void main(String[] args) {
List<String> list = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
//普通分页
splitList(list);
}
测试结果:
2 使用guava工具对list进行拆分分页
本人推荐用现有的工具类来处理,可以减小代码量,提高代码可读性!
2.1 添加guava工具包依赖
<properties>
<version.guava>21.0</version.guava>
</properties>
<!--guava通用工具包-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${version.guava}</version>
</dependency>
2.2 使用guava工具对list进行拆分分页
//分页大小
private static final int PAGE_SIZE = 5;
/**
* 使用guava工具对list进行拆分分页
*/
private static void partitionList(List<String> list) {
//分页拆分集合
List<List<String>> pageList = Lists.partition(list, PAGE_SIZE);
//循环打印看看
pageList.forEach(System.out::println);
}
2.3 测试guava分页
public static void main(String[] args) {
List<String> list = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
//guava工具对list进行拆分
partitionList(list);
}
测试结果:
可见条条道路通罗马,但是站在巨人的肩膀上,何乐而不为呢! 上面两种方法孰是孰非一目了然,你会用那种呢?
如果对你有疑问或需要技术支持,关注公众号联系我吧~
本文地址:https://blog.csdn.net/IT_Most/article/details/109532512
上一篇: 古代四大刺客中的专诸刺杀成功了吗?它使用的是什么武器?
下一篇: 幸亏能认得几个字
推荐阅读
-
Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例
-
Java 中初始化 List 集合的 6 种方式!
-
把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中
-
Map集合的遍历方式以及TreeMap集合保存自定义对象实现比较的Comparable和Comparator两种方式
-
Java 中初始化 List 集合的 6 种方式!
-
Java 初始化集合(List)的方式汇总,new ArrayList()
-
SQL2005 ROW_NUMER实现分页的两种常用方式
-
针对list集合进行分页展示
-
bootstrap paginator分页插件的两种使用方式实例详解
-
两种List集合分页方式