Java优化后台分页
优化前:
List<String> list = Arrays.asList("1","2","3","4","5","6","7","8");for (int i = 0; ; i++) {List<String> list1 = list.stream().skip(i* 2L).limit(2).collect(Collectors.toList());System.out.print(list1.size()+",");if(list1.size()<2){break;}System.out.println(list1);}
优化后:
public class PaginationExample { public static void main(String[] args) { List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8"); int pageSize = 2; for (int i = 0; i < Math.ceil((double) list.size() / pageSize); i++) { int start = i * pageSize; int end = Math.min(start + pageSize, list.size()); List<String> subList = list.subList(start, end); System.out.print(subList.size() + ","); System.out.println(subList); } }
}
优化说明:
使用 subList: 替换 stream 操作为 list.subList(),可以直接获取指定范围的子列表,这样可以减少流的创建和操作的开销。
计算页数: 使用 Math.ceil 来计算总页数,避免了不必要的无限循环。
合理计算结束索引: 使用 Math.min 确保结束索引不会超过列表的大小,从而避免了 IndexOutOfBoundsException。
这样优化后的代码既简洁又高效,适合处理大规模数据的分页处理。