Java中Page类对现有List分页

//创建Page类(pageNum从1开始)
Page page = new Page(pageNum, pageSize);

//为Page类中的total属性赋值
int total = CacheRegion.noticeList.size();

page.setTotal(total);

//计算当前需要显示的数据下标起始值
int startIndex = (pageNum - 1) * pageSize;

int endIndex = Math.min(startIndex + pageSize,total);

//从链表中截取需要显示的子链表,并加入到Page
page.addAll(List.subList(startIndex,endIndex)); //List:需要分页的list列表

//以Page创建PageInfo
PageInfo pageInfo = new PageInfo<>(page);

附:Lambda筛选List数据

//返回类型为泛型的List
List<T> List= List.stream().filter((T t) -> t.getIsImage().equals("0")).collect(Collectors.toList()); 

//返回类型为泛型中的指定字段类型的List
List<String> List= List.stream().filter((T t) -> t.getIsImage().equals("0")).map((T t) -> t.getImageAddr()).collect(Collectors.toList()); 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Javalist进行分页,可以通过对list进行切片(slice)来实现。下面是一个示例代码,可以将一个list按照指定的每页数量进行分页: ```java public class Paginator<T> { private List<T> items; private int pageSize; public Paginator(List<T> items, int pageSize) { this.items = items; this.pageSize = pageSize; } public List<T> getPage(int pageNumber) { int startIndex = (pageNumber - 1) * pageSize; int endIndex = Math.min(startIndex + pageSize, items.size()); return items.subList(startIndex, endIndex); } public int getTotalPages() { return (int) Math.ceil((double) items.size() / pageSize); } } ``` 这个接受两个参数:一个是要分页list,另一个是每页的数量。它提供了两个方法:getPage用于获取指定页数的分页后的list,getTotalPages用于获取总页数。 例如,假设有一个包含10个整数的list,需要每页分页3个,可以使用以下代码进行分页: ```java List<Integer> items = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int pageSize = 3; Paginator<Integer> paginator = new Paginator<>(items, pageSize); for (int i = 1; i <= paginator.getTotalPages(); i++) { List<Integer> pageItems = paginator.getPage(i); System.out.println(pageItems); } ``` 这个代码会输出: ``` [1, 2, 3] [4, 5, 6] [7, 8, 9] [10] ``` 注意,这个并没有改变原始的list,而是返回了一个新的分页后的list。如果你需要在原始list上进行分页,可以使用似`items.subList(startIndex, endIndex).clear(); items.addAll(startIndex, newItems);`的语法来替换原始的list的对应部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值