首页 > 解决方案 > LinkedHashSet 上的分页

问题描述

我有一个 API 控制器,它允许用户返回他们保存到其帐户的用户配置文件列表。这些数据存储在 MongoDB 中,用 POJO 术语来说,我想要分页的数据是字符串的 LinkedHashSet。

现在,在我的代码的其他一些部分中,我List<String>可以通过下面的代码“分页”简单:

public static <T> List<T> getPage(List<T> sourceList, int page, int pageSize) {
    if (pageSize <= 0 || page < 0) {
        throw new IllegalArgumentException("invalid page size: " + pageSize);
    }
    if (sourceList == null || sourceList.size() < (page * pageSize)) {
        return Collections.emptyList();
    }
    return sourceList.subList(page, Math.min(page + pageSize, sourceList.size()));
}

谁能帮我将同样的逻辑应用于 LinkedHashset?我很挣扎,因为该集合没有子列表方法。

下面是我的控制器:

 @GetMapping("/users/savedlist")
public Iterable<User> getUsersListOfSavedProfiles(Authentication authentication,
                                                  @PageableDefault(page = 0, size = 10) Pageable pageable) {
    return savedProfilesService.getUsersSavedProfiles(authentication.getName(), pageable.getPageNumber(), pageable.getPageSize());

和 Pojo:

@Document(collection = "UsersSavedProfiles")
public class SavedProfiles {
    @Id
    @JsonIgnore
    private String _id;

    private String userId;

    private LinkedHashSet<String> savedProfileIds;

通过 DALImpl 访问数据库:

@Override
public SavedProfiles findByUserId(String userId) {
    Query query = new Query();
    query.addCriteria(Criteria.where("userId").is(userId));
    return mongoTemplate.findOne(query, SavedProfiles.class);
}

**** 为清晰而编辑 **** 我知道我可以为用户配置文件文档的 Mongo 查询分页,但我需要做的是在其中一个文档中对 ArrayList savedProfiles 进行分页。

再次感谢看到这个的人

标签: javaspringspring-boot

解决方案


推荐阅读