List<>怎么转成Page<>
时间: 2023-11-02 13:17:12 浏览: 60
要将 `List<>` 转换为 `Page<>`,需要使用分页器(Pager)并设置分页大小和当前页码。
以下为示例代码:
```
public Page<T> ToPagedList<T>(List<T> list, int pageNumber, int pageSize)
{
var pageList = list.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
var totalCount = list.Count();
var totalPages = (int)Math.Ceiling((double)totalCount / pageSize);
return new Page<T>(pageList, pageNumber, pageSize, totalCount, totalPages);
}
```
其中,`ToPagedList()` 方法接收一个 `List<T>` 类型的列表、当前页码和分页大小,返回一个 `Page<T>` 类型的分页列表。
在方法内部,我们使用 `Skip()` 和 `Take()` 方法从列表中取出对应页码和分页大小的数据,并将其转换为 `List<T>` 类型的分页列表。同时,我们计算出总记录数和总页数,并将它们赋值给 `Page<T>` 对象的属性。
最后,我们返回分页列表。
相关问题
List<>怎么转成Page<>java
在 Java 中,可以使用 `PageRequest.of()` 方法将 `List<>` 转换为 `Page<>` 对象。下面是一个示例代码:
```java
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import java.util.ArrayList;
import java.util.List;
public class ListToPageConverter {
public <T> Page<T> convert(List<T> list, int pageNumber, int pageSize) {
int startIndex = pageNumber * pageSize;
int endIndex = Math.min(startIndex + pageSize, list.size());
List<T> sublist = new ArrayList<>(list.subList(startIndex, endIndex));
return new PageImpl<>(sublist, PageRequest.of(pageNumber, pageSize), list.size());
}
}
```
在上面的代码中,`convert()` 方法接受一个 `List<>` 对象、一个页码和一个页面大小作为参数,并返回一个 `Page<>` 对象。它首先计算要提取的子列表的起始索引和结束索引,然后使用 `subList()` 方法从原始列表中提取子列表。最后,它使用 `PageImpl<>` 类创建一个 `Page<>` 对象,该对象包含提取的子列表、页请求对象和原始列表的大小。
要使用此转换器,只需将 `List<>` 对象、页码和页面大小传递给 `convert()` 方法即可。例如:
```java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
int pageNumber = 1;
int pageSize = 3;
ListToPageConverter converter = new ListToPageConverter();
Page<Integer> page = converter.convert(list, pageNumber, pageSize);
```
在上面的示例中,我们创建了一个包含 10 个整数的列表,并将其转换为一个页面大小为 3 的 `Page<>` 对象,第二页的页码为 1。
List<>怎么转成Page<>java中
List<> 转成 Page<> 可以使用 Spring Data 提供的 Pageable 和 Page 接口。
假设你有一个 List<User> userList,要将它转成 Page<User>,可以按照以下步骤操作:
1. 创建 Pageable 对象,指定分页信息,如当前页码、每页记录数等。
```
Pageable pageable = PageRequest.of(pageNumber, pageSize);
```
2. 调用 Page 类的静态方法,将 List<User> 转成 Page<User>。
```
Page<User> userPage = new PageImpl<>(userList, pageable, userList.size());
```
其中,第一个参数是要转换的 List,第二个参数是 Pageable 对象,第三个参数是总记录数。
完整代码示例:
```
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import java.util.ArrayList;
import java.util.List;
public class ListToPageExample {
public static void main(String[] args) {
// 假设有一个包含 10 条记录的 List
List<User> userList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
userList.add(new User(i, "user" + i));
}
// 将 List 转成 Page
int pageNumber = 0; // 当前页码,从 0 开始
int pageSize = 5; // 每页记录数
Pageable pageable = PageRequest.of(pageNumber, pageSize);
Page<User> userPage = new PageImpl<>(userList, pageable, userList.size());
// 输出转换后的结果
List<User> content = userPage.getContent();
System.out.println("当前页记录数:" + content.size());
System.out.println("总记录数:" + userPage.getTotalElements());
System.out.println("总页数:" + userPage.getTotalPages());
System.out.println("是否有下一页:" + userPage.hasNext());
System.out.println("是否有上一页:" + userPage.hasPrevious());
System.out.println("第一页:" + userPage.isFirst());
System.out.println("最后一页:" + userPage.isLast());
System.out.println("当前页码:" + userPage.getNumber());
System.out.println("每页记录数:" + userPage.getSize());
}
}
class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```